Skip to content
Latchkey

graceful shutdownとは?

graceful shutdownは、プロセスに停止が要求されたときに、即座に終了させるのではなく、処理中のリクエストを完了させ、バッファをフラッシュし、接続をクリーンに閉じる機会を与える手法です。通常はSIGTERMシグナルで始まり、強制的なSIGKILLの前に猶予期間があります。適切に行えば、scale-downやデプロイをユーザーに見えないものにします。

なぜ重要か

デプロイやscale-down中にインスタンスが置き換えられるとき、リクエストの途中でkillするとユーザートラフィックが破棄され、作業が壊れます。graceful shutdownでは、まずドレインさせます。新しいリクエストの受け入れを止め、現在のものを完了させてから終了します。これはzero-downtimeデプロイとエフェメラルrunnerのクリーンな停止の前提条件です。

関連する概念

  • 通常は猶予期間付きのSIGTERMによってトリガーされる
  • connection drainingはシャットダウン中に新しいトラフィックを止める
  • zero-downtimeデプロイとクリーンなscale-downを可能にする

関連ガイド