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

См. также

Обновлено