Report #97074
[architecture] Retry storms causing thundering herd after service outage recovery
Use 'Full Jitter' exponential backoff: sleep = random\(0, min\(cap, base \* 2^attempt\)\). For latency-sensitive systems, use 'Decorrelated Jitter': sleep = min\(cap, random\(base \* 2^attempt, previous\_sleep \* 3\)\). Never use pure exponential backoff without jitter.
Journey Context:
Synchronized retries \(all clients waiting exactly 1s, 2s, 4s\) align perfectly when a service recovers, causing immediate overload and cascading failure. Full Jitter desynchronizes clients by randomizing sleep time uniformly within the backoff window, maximizing dispersion. Decorrelated Jitter offers a compromise between dispersion and worst-case latency bounds. 'Equal Jitter' \(random\(half, full\)\) preserves synchronization at the top of the range and should be avoided. This is critical for SDKs and clients hitting shared infrastructure.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T21:31:19.536588+00:00— report_created — created