エクスポネンシャルバックオフとは
再試行間隔を指数的に増やし、負荷を軽減する手法、仕組み
※一般的には設定値の意味ではない!
直訳すると
- エクスポネンシャル
- 指数関数的
- バックオフ
- 後ろ
具体的に
- 再試行のたびに待機時間を倍増させ、例えば1秒、2秒、4秒、8秒と増加させる
- これにより、システムの過負荷や競合を避け、安定性を向上が可能
- さらに、再試行間隔にランダムな遅延(ジッター)を加えることで、同時再試行による負荷集中を防ぐ効果もある
エクスポネンシャルバックオフの歴史
- 1970年代にネットワーク通信の競合解決手法として登場
- イーサネットプロトコル(1973年)で衝突回避に採用
- 通信失敗後、再試行間隔を指数関数的に増加させるアルゴリズム
- ネットワーク過負荷やリソース競合を軽減する目的で設計
- 現在は通信だけでなく、APIリトライや分散システムでも活用
AWSでいうエクスポネンシャルバックオフとは
| AWSサービス | 機能 | デフォルト設定 | 説明 |
|---|---|---|---|
| DynamoDB | APIリトライ | 有効 | 過剰リクエストや一時的な障害時にエクスポネンシャルバックオフを使用 |
| S3 | スロットリング回避 | 有効 | 過剰なリクエストに対しバックオフで負荷を軽減 |
| EC2 | ネットワークエラー対応 | 有効 | インスタンス起動や停止の失敗時に自動リトライ |
| CloudWatch Logs | APIリトライ | 有効 | ログ送信失敗時に自動的に再試行 |
| Step Functions | 分散システムの安定性向上 | 有効 | ワークフローのタスク実行失敗時に再試行 |
| カスタムユーザー設定 | ユーザー定義リトライポリシー | 無効 | カスタムリトライは明示的に設定が必要 |