Definition · The retry-storm mapWrite C for capacity, λ for the offered load before retries, base for the failure probability under no overload and r for the retry count. Define p(L) = base + (1 − base)·max(0, (L − C)/L) and L′ = λ · (1 − p(L)ʳ⁺¹)/(1 − p(L)). A fixed point is a load with L′ = L; the system's steady state is such a point, if one exists below the ceiling λ(r + 1).
Capacity is the unit: every load on this page is a multiple of C, so C = 1 and the offered load λ = 0.95 means ninety-five per cent of capacity. The base failure rate is what the service returns when it is not overloaded — a small tail of genuine errors, here ten per cent, which is high enough to make the iteration visible in five steps.
Five steps of the map, by hand
λ = 0.95, C = 1, base = 0.10, r = 3
step load in p attempts load out denominator digits
1 0.95000 0.10000 1.11100 1.05545 5
2 1.05545 0.14728 1.17217 1.11356 13
3 1.11356 0.19178 1.23562 1.17384 39
4 1.17384 0.23328 1.30040 1.23538 119
5 1.23538 0.27148 1.36519 1.29693 358
the first step alone crosses capacity: 0.95 × 1.111 = 1.05545
Work step two by hand and the loop stops being a metaphor. The load is 1.05545, so the overload share is (1.05545 − 1)/1.05545 = 0.05254, and the failure rate is 0.1 + 0.9 × 0.05254 = 0.14728. Four attempts at that rate cost 1 + 0.14728 + 0.02169 + 0.00319 = 1.17217, and 0.95 × 1.17217 is 1.11356. Every figure in the row came from the row above it.
The last column is worth a sentence of its own. The amplification carries the r-th power of the failure rate's denominator, so each step cubes it at r = 3: five digits, then thirteen, thirty-nine, a hundred and nineteen, three hundred and fifty-eight. By the seventh iterate the exact fraction has over three thousand digits, and the table stops and says so rather than silently rounding.
Bracketing the fixed point instead of iterating to it
The iteration cannot reach the answer, so the lab does not use it to. The map is increasing in L and bounded above by λ(r + 1), so the function g(L) = L′ − L is non-negative at λ and non-positive at λ(r + 1), and a root is trapped between them. Bisection evaluates the map afresh at each probe, so nothing compounds and the denominators stay small.
λ = 0.95, base = 0.10, r = 3
fixed point bracketed at 1.72736 ≤ L* ≤ 1.72736
failure rate there p = 0.47897
amplification there 1.8183
with the retries switched off 0.95000
check: 0.95 × 1.8183 = 1.72739 ≈ L* ✓
The result is an enclosure rather than a rounded number: the fixed point is at least the lower bound and at most the upper one, and both ends are exact fractions. At this setting the two ends agree to five decimal places, which is why the readout prints the same figure twice.
Example · The service that could have served the load0.95 of capacity was serviceable. With three retries the system settles at 1.727 of capacity and a 47.9% failure rate — and that failure rate is what sustains the amplification that produced the load. Turn the retries off in the lab and the load returns to 0.95 immediately. The overload has no external cause at all, which is exactly why it does not end when the original trigger does.
Where the transition is
It is not gradual. At the same 10% base rate and three retries, an offered load of 0.80 settles at 0.8888 and one of 0.90 settles at 0.9999 — both below capacity and stable in a single step. 0.95 settles at 1.727. The system is fine, fine, and then eighty per cent over capacity, and the parameter that moved was five per cent of offered load.
Example · The retry count as the controlHold the offered load at 0.95 and vary only the policy: with no retries the fixed point is 0.95, with one retry 1.168, with two 1.439, with three 1.727. Every one of those is the same traffic against the same service. The policy is not a response to the overload in any of the last three cases; it is the whole of it.