メイン コンテンツにスキップ

グレースフルシャットダウン

Glasswall Halo は、シャットダウン処理中に新しいリクエストを拒否しつつ、処理中のリクエストをサービスが完了できるようにするため、グレースフルシャットダウンを実装しています。

これにより、未完了の作業が適切に処理され、データ損失やリクエストの部分的な処理のリスクが低減されます。

同期 API と非同期 API

Glasswall Halo APIs は、ASP.NET Core のグレースフル シャットダウン メカニズムを使用します。詳細は、Kestrel のシャットダウン タイムアウトに関するMicrosoft ドキュメントを参照してください。

デフォルトでは、シャットダウン タイムアウトは60 秒に設定されています。この値は、シャットダウン開始後、開いている接続を強制的に閉じるまでサーバーが待機する時間を定義します。

この期間中:

  • Kestrel は、処理中のリクエストが完了するのを待機します。
  • 新しい接続やリクエストは受け付けられません。

シャットダウン タイムアウトが経過した後も、一部のバックグラウンド タスクが実行を継続する可能性があります。この動作は、ホストされたサービスの停止処理に関するMicrosoft ドキュメントで説明されています。

キャンセルが要求された後でも、タスクは破棄されません。ホストは、最終的な終了前にすべてのタスクが完了するのを待機します。

レポート アグリゲーターおよび Engine サービス

Report Aggregator および Engine サービスはホストされたサービスとして実装されており、サービスの起動時および停止時にカスタム ロジックを実行できます。

詳細は、IHostedService に関する Microsoft ドキュメントを参照してください。

シャットダウンが開始されると:

  • 両方のサービスは、処理中のリクエストが完了することを許可します。
  • デフォルトのシャットダウン タイムアウトとして5 秒が適用されます。
  • タイムアウトを超過した場合、サービスは強制終了されます。

この設計により、信頼性とシャットダウン速度のバランスを取りながら、予測可能なシャットダウン動作が保証されます。