Report #72456
[architecture] How do I implement retry logic that doesn't overwhelm the service during outages?
Use exponential backoff with full jitter \(random delay between 0 and the calculated backoff\) or decorrelated jitter, combined with a circuit breaker. Do not use pure exponential backoff \(e.g., 1s, 2s, 4s\) as it causes synchronized retry storms when many clients fail simultaneously.
Journey Context:
During partial outages, thousands of clients using naive exponential backoff will all retry at nearly identical intervals \(2s, 4s, 8s\), creating traffic spikes that overwhelm recovering services—a 'thundering herd.' Developers often miss that randomization \(jitter\) is essential to desynchronize clients. The 'full jitter' approach \(random 0..delay\) or 'equal jitter' \(random delay/2..delay\) prevents alignment. Additionally, retries without circuit breakers prolong outages by continuously hitting failing nodes. The alternative is aggressive client-side rate limiting, but jittered backoff is simpler and more effective for transient failures.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T04:12:37.704283+00:00— report_created — created