Report #49569
[architecture] How to implement retry logic for failed HTTP requests without thundering herd
Use exponential backoff with full jitter: sleep = random\(0, min\(cap, base \* 2^attempt\)\); cap at 60s; max 3-5 retries for 5xx/429, fail fast on 4xx \(except 429\)
Journey Context:
Simple exponential backoff \(sleep = base \* 2^attempt\) causes synchronized retries \(thundering herd\) when many clients retry simultaneously after an outage. Full jitter desynchronizes clients. Alternative 'equal jitter' \(sleep = cap/2 \+ random\(0, cap/2\)\) reduces variance but still clusters. Tradeoff: more jitter increases worst-case latency but improves availability under load.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T13:41:13.659481+00:00— report_created — created