-
Notifications
You must be signed in to change notification settings - Fork 0
MS_ExponentialBackoff
nishi_74322014 edited this page Aug 3, 2026
·
1 revision
- 戻る(HttpClientの類の使い方、クラウド設計パターン(
MS_CloudDesignPatterns.md))- Exponential Backoff(指数バックオフ)
- Polly
ライブラリを実装しようと思い調べてみた。
最大値がある。
リトライ間隔は
min ( ( ( 2^n ) + random_number_milliseconds ), maximum_backoff )
で、計算可能。
1,000 ミリ秒以下の乱数。
- なんらかの状況によって多数のクライアントが同期され、
多数の再試行が同着するような状況を避けることができる(サンダリング・ハード対策)。 - この値は、再試行リクエストの後に毎回再計算される。
リトライ間隔の最大値。
- 通常、32 秒または 64 秒。
- 適切な値はユースケースによって異なる。
補足: 上式は Google Cloud の「切り捨て型指数バックオフ」の定義そのままで、
2^nの単位は秒、random_number_millisecondsはミリ秒である点に注意 (実装時は単位を揃える)。また、ジッタの入れ方には Full Jitter(
random(0, 2^n))や Decorrelated Jitter といった方式もあり、 AWS の検証では Full Jitter のほうが競合を減らせるとされている。 上式(固定上限のジッタを加算)は同着の抑止効果が相対的に弱い。
補足: サーバが
Retry-Afterヘッダ(429 / 503 で返る)を返す場合は、 計算値より サーバの指示を優先するのが正しい。
色々あるが、以下が一番、解り易い。
Tags: 通信技術, .NET開発, ASP.NET
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。