lizard sleep
Позволяет сервису засыпать, когда к нему нет трафика, и просыпаться при следующем запросе (алиас lizard serverless). Сервис засыпает с сохранённой памятью, поэтому просыпается с того же места, обычно примерно за секунду.
Использование
lizard sleep [service] [flags]Без --on или --off команда sleep показывает настройку и сколько раз сервис засыпал и просыпался. Без аргумента service она использует сервис, привязанный к директории. В дашборде та же настройка — переключатель Serverless в настройках сервиса.
Флаги
| Флаг | Описание |
|---|---|
-s, --service <name> | Имя или ID сервиса (то же, что аргумент service) |
-p, --project <id> | Имя, slug или ID проекта |
--on | Засыпать при простое. Чтобы применить это, сервис один раз перезапускается |
--off | Работать всегда. Спящий сервис просыпается |
--idle <minutes> | Минуты без трафика до засыпания, от 5 до 1440. --on без него задаёт 10. Отдельно меняет время простоя сервиса, который уже засыпает |
Как это работает
После заданного времени без трафика Lizard сохраняет память и процессы сервиса и останавливает его контейнер. Первый HTTP-запрос к приложению или первое подключение клиента к базе данных будит его: Lizard восстанавливает сохранённое состояние, обычно примерно за секунду, и затем передаёт запрос дальше. Если сохранённое состояние восстановить не удаётся, сервис запускается заново, и это занимает столько же, сколько обычный запуск.
Сервис засыпает, только когда к нему ничего не подключено:
- Приложение засыпает, если за время простоя к нему не было запросов и нет открытых подключений. Открытый WebSocket не даёт ему заснуть.
- База данных засыпает, если за время простоя к ней не был подключён ни один клиент. Пул подключений, который держит их открытыми, не даёт ей заснуть.
Сервис на паузе не засыпает и не просыпается.
Какие сервисы могут засыпать
- Приложения с одной репликой и портом. Воркеры (порт
0) и приложения с несколькими репликами засыпать не могут. - Managed Postgres версии 14 или новее и Managed Redis.
Приложению на старом рантайме сначала нужен редеплой; команда сообщит об этом. Менять настройку может любой участник проекта.
Оплата
Пока сервис спит, он не использует CPU и почти не использует память, поэтому плата за вычисления почти прекращается до следующего пробуждения. Данные, которые он хранит, могут по-прежнему оплачиваться как хранилище; см. Оплату.
Вывод JSON
С --json команда sleep выводит id, name, kind (app или addon), enabled, idleMinutes, sleeps, wakes, lastSleptAt и lastWokeAt (Unix-время в миллисекундах или null) и lastError. После --on, --off или --idle поле restarted показывает, перезапускался ли сервис, чтобы применить изменение.
Примеры
Показать настройку
lizard sleep apiЗасыпать после 30 минут простоя
lizard sleep api --on --idle 30Разрешить базе данных засыпать
lizard sleep --service my-db --onИзменить время простоя
lizard sleep api --idle 60Держать сервис всегда включённым
lizard sleep api --offСм. также
- lizard pause — остановить сервис до возобновления
- lizard scale — реплики, CPU и память
- Managed Postgres и Managed Redis
- Оплата — тарифы на вычисления и хранилище
Обновлено