コンテンツにスキップ

Graceful shutdown

処理中のリクエストを終了させてから、serverを停止する仕組み

  1. 新しいリクエストを受け付けない
  2. 処理中のリクエストを完了させる(タイムアウトを実装)
  3. DBコネクション、ファイルハンドラを正しくクローズする
  4. クリーンアップ処理を実行

この2を実行する際に、大量のデータ登録などのバッチ処理が走っているとタイムアウトを超えて 処理が途中で中断される可能性がある。

このような場合に備えてQueueを導入することで、非同期処理に変えておくことが解決策になる。

  • Web server
  • Web worker
  • Queue(Redis)
flowchart LR

subgraph miniPC
  ws(Web server)
  ww(Web worker)
  r(Redis)
end

ws --> r --> ww
  • Webserver
  • SQS
  • Lambda
flowchart LR

subgraph miniPC
  ws(Web server)
end

subgraph AWS
  s(SQS)
  l(Lambda)
end

ws --> s --> l