graceful shutdownとは?
graceful shutdownは、プロセスに停止が要求されたときに、即座に終了させるのではなく、処理中のリクエストを完了させ、バッファをフラッシュし、接続をクリーンに閉じる機会を与える手法です。通常はSIGTERMシグナルで始まり、強制的なSIGKILLの前に猶予期間があります。適切に行えば、scale-downやデプロイをユーザーに見えないものにします。
なぜ重要か
デプロイやscale-down中にインスタンスが置き換えられるとき、リクエストの途中でkillするとユーザートラフィックが破棄され、作業が壊れます。graceful shutdownでは、まずドレインさせます。新しいリクエストの受け入れを止め、現在のものを完了させてから終了します。これはzero-downtimeデプロイとエフェメラルrunnerのクリーンな停止の前提条件です。
関連する概念
- 通常は猶予期間付きのSIGTERMによってトリガーされる
- connection drainingはシャットダウン中に新しいトラフィックを止める
- zero-downtimeデプロイとクリーンなscale-downを可能にする
関連ガイド
What Is a Zero-Downtime Deploy?A zero-downtime deploy releases a new version without any interruption to users, by overlapping old and new i…
What Is a Readiness Probe?A readiness probe checks whether a container is ready to accept traffic, removing it from the load balancer u…
What Is an Ephemeral Runner?An ephemeral runner is a CI worker that runs exactly one job on a fresh machine, then is destroyed, giving ev…