計算方法と根拠
待機時間の求め方
n回目の再試行の待ち時間は「基準×倍率の(n-1)乗」で、上限を超えたら上限で頭打ちにします(上限付きの指数バックオフ)。基準1秒・倍率2なら、1・2・4・8・16・32…秒と増えます。
ジッターについて
ジッター(待ち時間にランダムな幅を加える方式)は含めていません。ここで出すのはランダムさのない、決まった値の表です。
計算例
基準1秒・倍率2・上限30秒で6回再試行すると、待ち時間は1・2・4・8・16・30秒、累計は61秒です。
使っている式
| 名前 | やっていること | 式 |
|---|---|---|
| 1回目の待ち時間(回数内のとき) | 再試行が1回以上のときの1回目の待ち時間です。 | w1 = if(tries >= 1, min(cap, base * pow(mult, 0)), 0) |
| 2回目の待ち時間(回数内のとき) | 再試行が2回以上のときの2回目の待ち時間です。 | w2 = if(tries >= 2, min(cap, base * pow(mult, 1)), 0) |
| 3回目の待ち時間(回数内のとき) | 再試行が3回以上のときの3回目の待ち時間です。 | w3 = if(tries >= 3, min(cap, base * pow(mult, 2)), 0) |
| 4回目の待ち時間(回数内のとき) | 再試行が4回以上のときの4回目の待ち時間です。 | w4 = if(tries >= 4, min(cap, base * pow(mult, 3)), 0) |
| 5回目の待ち時間(回数内のとき) | 再試行が5回以上のときの5回目の待ち時間です。 | w5 = if(tries >= 5, min(cap, base * pow(mult, 4)), 0) |
| 6回目の待ち時間(回数内のとき) | 再試行が6回以上のときの6回目の待ち時間です。 | w6 = if(tries >= 6, min(cap, base * pow(mult, 5)), 0) |
| 7回目の待ち時間(回数内のとき) | 再試行が7回以上のときの7回目の待ち時間です。 | w7 = if(tries >= 7, min(cap, base * pow(mult, 6)), 0) |
| 8回目の待ち時間(回数内のとき) | 再試行が8回以上のときの8回目の待ち時間です。 | w8 = if(tries >= 8, min(cap, base * pow(mult, 7)), 0) |
| 9回目の待ち時間(回数内のとき) | 再試行が9回以上のときの9回目の待ち時間です。 | w9 = if(tries >= 9, min(cap, base * pow(mult, 8)), 0) |
| 10回目の待ち時間(回数内のとき) | 再試行が10回以上のときの10回目の待ち時間です。 | w10 = if(tries >= 10, min(cap, base * pow(mult, 9)), 0) |
| 11回目の待ち時間(回数内のとき) | 再試行が11回以上のときの11回目の待ち時間です。 | w11 = if(tries >= 11, min(cap, base * pow(mult, 10)), 0) |
| 12回目の待ち時間(回数内のとき) | 再試行が12回以上のときの12回目の待ち時間です。 | w12 = if(tries >= 12, min(cap, base * pow(mult, 11)), 0) |
| 待ち時間の合計 | 1回目から指定回数までの待ち時間の合計です。 | totalw = w1 + w2 + w3 + w4 + w5 + w6 + w7 + w8 + w9 + w10 + w11 + w12 |
| 待ち時間の合計(結果) | 各回の待ち時間(上限で頭打ち)の合計です。 | totalw |
| 最後の再試行の待ち時間(結果) | min(上限, 基準×倍率^(回数-1))です。 | min(cap, base * pow(mult, tries - 1)) |
| 待ち時間の合計(分)(結果) | 合計(秒)を60で割った値です。 | totalw / 60 |
期ごとの繰り返し計算
再試行ごとの待機時間と累計
各回の待ち時間と、そこまでの累計です。
- 最初の cum =
0 - 待ち時間 =
min(cap, base * pow(mult, n - 1)) - 待ち時間の累計 =
cum + wait - 次の期に渡す cum =
acc
期の数 = tries。
式の記法: + - * / ^(べき乗)、かっこ、min / max / round / ceil / floor / pow / abs / sqrt、if(条件, 真のとき, 偽のとき)。round(x, 桁) は四捨五入、ceil は切り上げ、floor は切り捨てです。
設定値(定数)と出典
この計算では、税率や料金表などの外部の設定値は使っていません。数学的な定義の式だけで計算しています。
入力できる範囲
| 項目 | 範囲 | 初期値 |
|---|---|---|
| 基準の待ち時間 | 0.01〜3,600秒 | 1秒 |
| 倍率 | 1〜10倍 | 2倍 |
| 待ち時間の上限 | 0.01〜86,400秒 | 30秒 |
| 再試行の回数 | 1〜12回 | 6回 |
結果は、同じ条件なら本サイトのどのページでも同じ数字になります(ページの数字も、計算ツールも同じ計算の仕組みで出しています)。
ご利用にあたって
- 入力した基準・倍率・上限にもとづく算術です。特定のサービスやライブラリの既定値・推奨値を示すものではなく、実際の設計ではそのサービスの仕様を確認してください。
- 待機時間だけを計算します。リクエスト自体の所要時間・タイムアウト時間・ジッターは含めていません。