ubin.sh

バックオフ & レート制限

リトライ・バックオフ戦略とレート制限アルゴリズムを、パラメータ可変のリアルタイム可視化で比較します。

試行ごとの遅延

固定合計 800ms
線形合計 3.6s
指数合計 25.5s
指数 + Full ジッター合計 16.7s
指数 + Equal ジッター合計 21.1s
Decorrelated ジッター合計 13.8s

このツールについて

バックオフモードは6つの戦略の試行ごとの遅延を並べて描画します — 固定、線形、指数、そしてAWSのジッター変種(full、equal、decorrelated) — 各戦略がリトライをどれだけ分散させ、総待機時間がどうなるかが一目で分かります。基本遅延・倍率・上限・試行回数を調整し、ジッターを引き直して分布を確認できます。

レート制限モードはトークンバケット、リーキーバケット、固定ウィンドウ、スライディングウィンドウを同じトラフィックでシミュレートし、各リクエストを許可/制限としてタイムラインに表示します。上限・ウィンドウ・リクエスト率・初期バーストを調整すると、アルゴリズム間の違いがどこで分かれるか正確に見えます。

よくある質問

なぜ指数バックオフにジッターを加えるのですか?+

ジッターがないと、同じ瞬間に失敗したクライアントが同じ瞬間にリトライし、サーバーを再び過負荷にします(thundering herd)。ジッターは遅延をランダム化してリトライを分散させます。AWSがfullまたはdecorrelatedジッターを推奨する理由です。

fullジッターとequalジッターの違いは?+

fullジッターは[0, exp]の一様分布から遅延を選び分散が最大ですが、ごく早くリトライすることがあります。equalジッターは指数遅延の半分を固定し残り半分だけランダム化し、分散を少し犠牲に最小待機を保証します。

トークンバケット vs リーキーバケット、どちらを使う?+

トークンバケットは容量までバーストを許可し、その後はリフィル速度に落ち着きます — スパイクを許容するAPIに適します。リーキーバケットはバーストに関係なく滑らかな一定出力率を強制します — 下流にスパイクを送ってはいけない場合に適します。

固定ウィンドウはなぜ2倍のバーストを許すのですか?+

固定ウィンドウは境界でカウンターをリセットするため、クライアントはリセット直前に上限分、直後にまた上限分を送れ、境界をまたいで最大2倍通せます。スライディングウィンドウは移動区間で数えてこれを防ぎます。

ジッターは本当にランダムですか?+

他のパラメータを調整する間チャートが揺れないよう、シード付きPRNGを使います。「ジッターを引き直す」はシードを変えて別のサンプルを表示します。実際のクライアントは真の乱数源を使うべきです。

関連ツール