Retries are supposed to ride out a blip โ but a correlated failure makes the whole fleet fail at once, and then retry at once. The obvious fix makes it worse: every retry adds load to a service that's already drowning, and naive retry multiplies the offered load by the retry count. Backoff spaces the rounds out, yet each still arrives as one synchronised wave. Only jitterRandomising each backoff delay within its window, so requests that failed together don't retry together. Full jitter picks a uniform delay in [0, the backoff target]. breaks the herd apart.
At its worst moment, Exp + jitter hits the service with about 102 retries at once over a 6.3 s drain.
| Strategy | Peak load | Drains in |
|---|---|---|
| Immediate | 6ร herd | instant |
| Fixed delay | 1ร herd | 600 ms |
| Exponential | 1ร herd | 6.3 s |
| Exp + jittershown | 0.1ร herd | 6.3 s |
Read the peak column: immediate retry stacks every round into one spike; fixed and exponential backoff cut that to a single herd per round but never below it โ they only move the rounds apart in time. Jitter is the one that drops the peak, because it's the only one that stops the herd retrying in unison. In practice, pair it with a retry budget and a circuit breaker so the herd shrinks too.