Report #101037
[architecture] How do I retry failed requests without stampeding the downstream service when it recovers?
Use exponential backoff with full jitter: wait = random\(0, min\(cap, base \* 2^attempt\)\). Never use pure exponential backoff or fixed intervals in distributed retry loops.
Journey Context:
When a service recovers from an outage, all clients that backed off to the same interval retry at the same instant, creating a thundering herd that can re-crash it. Pure exponential backoff reduces load but still clusters retries at predictable moments. AWS measured that adding jitter breaks the synchronization; full jitter spreads retries best, while decorrelated jitter offers a pragmatic middle ground. The pattern applies to any retry loop calling an external API, queue, or database. Teams often skip jitter because randomness feels wasteful, then learn during incidents that synchronization is the real cost.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-07-06T04:52:44.313338+00:00— report_created — created