Report #9238
[architecture] My service overwhelms downstream during outages with immediate retries; how do I retry safely?
Implement exponential backoff with full jitter: sleep = random\(0, min\(cap, base \* 2^attempt\)\), with a base of 100ms and cap of 60s. For HTTP 429/503 responses, respect the Retry-After header and pause the backoff sequence.
Journey Context:
Immediate retries create a 'thundering herd'—the downstream is struggling to recover, and the sudden spike of retries knocks it back down. Exponential backoff \(1s, 2s, 4s...\) helps, but in distributed systems, clients tend to synchronize their retry times \(the 'harmonic spike'\), all hitting the server at the same moment. Full jitter randomizes the wait time between 0 and the calculated exponential value, decorrelating the retries. The cap prevents infinite growth \(e.g., max 60s\). Always treat 5xx/429 as retryable, but 4xx \(except 429\) as non-retryable \(client error\).
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T07:41:53.614528+00:00— report_created — created