Жизненный цикл и скорость
Runtime-приложение в Layero — serverless: оно не работает (и не тратит ресурсы), пока к нему никто не ходит, и просыпается по первому запросу. Ниже — честные цифры, как это ощущается.
Четыре состояния
| Состояние | Что происходит | Ответ на запрос |
|---|---|---|
| Горячее | процесс обслуживает трафик | обычная скорость приложения (~0.1–0.2 с) |
| Тёплое | процесс заморожен в памяти (после ~20 с простоя) | ~0.2–0.3 с — мгновенная разморозка |
| Холодное | контейнер остановлен, образ хранится на ноде | ~4–12 с — новый старт процесса, зависит от стека |
| Архив | без визитов 30+ дней (free-тариф) | как холодное, чуть дольше |
Цифры — медианы реальных замеров платформы, а не маркетинг: мы непрерывно меряем скорость всех приложений синтетическим монитором. Замер за 14 дней (июль 2026), только пользовательские приложения:
| Состояние | Медиана | 90-й перцентиль |
|---|---|---|
| Горячее | 0.13 с | 0.53 с |
| Тёплое | 0.20 с | 0.70 с |
| Холодное | 10.9 с | 20.7 с |
Холодный старт сильно зависит от стека — это время запуска вашего процесса плюс подъём контейнера:
| Тип приложения | Медиана холодного старта |
|---|---|
| Python (Flask, FastAPI) | 4.5 с |
| Node (Express, Fastify) | 6.1 с |
| SSR Next.js | 9.3 с |
| Streamlit | 11.8 с |
Холодный старт случается редко: за те же 14 дней на 8800 горячих ответов пришлось 335 холодных. Но если он случился — посетитель ждёт секунды, а не доли секунды, и планировать надо по этой цифре.
Почему посетитель обычно не ждёт
- Запрос никогда не теряется. Пока приложение просыпается, запрос ждёт на платформе и получает настоящий ответ — не ошибку.
- GET-страницы отдаются из кэша мгновенно. Если страница уже открывалась в последние часы, посетитель получит её за ~0.2 с из edge-кэша, а приложение проснётся в фоне.
- Популярные приложения прогреваются заранее. Платформа автоматически держит тёплыми приложения с регулярным трафиком.
Что это значит для вашего кода
- Фоновая работа вне запросов не выполняется. Через ~20 с без
входящих запросов процесс замораживается: таймеры, планировщики
(
node-cron, APScheduler), long-polling ботов — останавливаются до следующего HTTP-запроса. Боту или воркеру нужен постоянно работающий процесс — эта модель им не подходит. - Долгоживущие соединения (WebSocket) живут, пока открыты — заморозка их не рвёт. Но после закрытия приложение уснёт как обычно.
- Лимит на запрос — 60 секунд. Дольше — обрыв; выносите тяжёлое в асинхронную обработку с поллингом.
- Диск эфемерен — см. Stateless-инвариант.
Ресурсы
| Тариф | RAM | CPU |
|---|---|---|
| Free | 256 MB | 0.25 vCPU |
| Pro | 512 MB | 1 vCPU |
Если приложение падает с ошибкой памяти (это видно в логах проекта — «убит OOM-killer»), тяжёлым Next.js-приложениям с богатым SSR-рендером обычно хватает Pro-тарифа.
Почему так, а не «всегда включено»
Постоянно работающий контейнер стоит денег даже когда сайт никто не открывает. Serverless-модель позволяет Layero хостить ваше приложение дёшево или бесплатно: спящий проект почти ничего не потребляет, а просыпается быстрее, чем у альтернатив этого класса (у некоторых конкурентов бесплатные проекты просыпаются 30–60 секунд; у нас тёплое состояние — 0.2 с, и в него попадает подавляющее большинство запросов).