Skip to content

MS_ExponentialBackoff

nishi_74322014 edited this page Aug 3, 2026 · 1 revision

Exponential Backoff(指数バックオフ)

概要

ライブラリを実装しようと思い調べてみた。

詳細

リトライ回数

最大値がある。

リトライ間隔

リトライ間隔は

min ( ( ( 2^n ) + random_number_milliseconds ), maximum_backoff )

で、計算可能。

n

リトライ回数

random_number_milliseconds

1,000 ミリ秒以下の乱数。

  • なんらかの状況によって多数のクライアントが同期され、
    多数の再試行が同着するような状況を避けることができる(サンダリング・ハード対策)。
  • この値は、再試行リクエストの後に毎回再計算される。

maximum_backoff

リトライ間隔の最大値。

  • 通常、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

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally