指数バックオフ(Exponential Backoff)は、リクエストの再試行間隔を指数関数的に増加させるアルゴリズムです。最初のリトライを1秒後、次を2秒後、その次を4秒後というように、待ち時間を倍々に延ばしていきます。
単純に同じ間隔でリトライし続けると、サーバーが回復しかけたタイミングで再び大量のリトライが殺到し、過負荷状態が長引くことになります。指数バックオフはリトライの頻度を段階的に下げることで、サーバーの回復を妨げない設計になっています。
実運用ではジッター(Jitter)と組み合わせるのが鉄則です。ジッターとは、リトライの待ち時間にランダムな揺らぎを加えることです。ジッターがないと、多数のクライアントが同時にエラーを受け取った場合、全員が同じタイミングでリトライして再び衝突します(Thundering Herd問題)。
Anthropic公式SDKではジッター付き指数バックオフが標準で実装されています。自前でリトライロジックを書く場合は、最大リトライ回数(通常3〜5回)と最大待ち時間(通常30〜60秒)にキャップを設けることも忘れないでください。