タイムアウト
処理や通信が一定時間内に終わらない場合に、待ち続けず失敗として扱うための設計。
概要
タイムアウトは、処理や通信が一定時間内に終わらない場合に、待ち続けず失敗として扱うための設計です。 外部API連携、DB接続、バッチ処理、非同期処理などで重要になります。
内容
タイムアウトがないと、外部システムやDBが応答しないときに、アプリケーション側のスレッドや接続が埋まり続けます。 その結果、1つの障害がシステム全体の遅延や停止に広がることがあります。
タイムアウトには、接続を確立するまでの時間、応答を待つ時間、処理全体の制限時間などがあります。
見るときの観点
- どこで待ち続ける可能性があるか
- 接続タイムアウトと読み取りタイムアウトを分けているか
- タイムアウト後にリトライするか
- タイムアウトしても外部側では処理成功している可能性がないか
- ユーザーや後続処理にどう失敗を伝えるか
関連する設計
- retry
- circuit breaker
- fallback
- idempotency
- monitoring