lizard sleep

トラフィックがないときにサービスをスリープさせ、次のリクエストで起こします(別名 lizard serverless)。メモリを保存したままスリープするため、起きたときは中断したところから続きます。通常は約 1 秒で起きます。

使い方

lizard sleep [service] [flags]

--on も --off も付けない場合、sleep は設定と、サービスがスリープした回数・起きた回数を表示します。引数 service を省略すると、ディレクトリにリンクされたサービスを使います。ダッシュボードでは、サービスの設定にある Serverless スイッチが同じ設定です。

フラグ

フラグ説明
-s, --service <name>サービスの名前または ID(引数 service と同じ)
-p, --project <id>プロジェクトの名前、スラッグ、または ID
--onアイドル時にスリープします。適用のためにサービスが 1 回再起動します
--off常に起動したままにします。スリープ中のサービスは起きます
--idle <minutes>スリープするまでのトラフィックのない時間(分)、5〜1440。これを付けずに --on を使うと 10 になります。単独で使うと、すでにスリープするサービスのアイドル時間を変更します

仕組み

トラフィックのない状態がアイドル時間続くと、Lizard はサービスのメモリとプロセスを保存し、コンテナを停止します。アプリへの最初の HTTP リクエスト、またはデータベースへの最初のクライアント接続でサービスが起きます。Lizard は保存した状態を復元し(通常は約 1 秒)、その後リクエストを渡します。保存した状態を復元できない場合、サービスは最初から起動し、通常の起動と同じ時間がかかります。

サービスがスリープするのは、何も接続していないときだけです。

  • アプリは、アイドル時間のあいだリクエストがなく、開いている接続もない場合にスリープします。WebSocket が開いているとスリープしません。
  • データベースは、アイドル時間のあいだどのクライアントも接続していなかった場合にスリープします。接続を開いたままにする接続プールがあるとスリープしません。

一時停止中のサービスは、スリープも起動もしません。

スリープできるサービス

  • レプリカが 1 つでポートのあるアプリ。worker(ポート 0)とレプリカが 2 つ以上のアプリはスリープできません。
  • 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

関連項目

更新日