Retry storm
Section titled “Retry storm”A retry storm occurs when failing or slow requests trigger enough retries to create additional load on an already unhealthy dependency.
flowchart LR
Requests[Original requests] --> Dependency[Slow or failing dependency]
Dependency --> Errors[Timeouts and errors]
Errors --> Retries[Client retries]
Retries --> Dependency
The feedback loop can keep the dependency overloaded after the original fault starts to recover.
Symptoms
Section titled “Symptoms”Request volume rises after errors begin. Recovery takes longer than expected, and several client layers can multiply one original request into many attempts.
Detection
Section titled “Detection”Measure original requests separately from retry attempts. Inspect retry counts across every layer in the call path and correlate them with saturation and timeout rates.
Mitigation
Section titled “Mitigation”Use bounded retries, exponential backoff, jitter, retry budgets, and explicit rules for which failures are safe to retry. Prefer one retry owner in a layered call path when possible.
Idempotency is required when a retry can repeat a side effect.
Trade-offs
Section titled “Trade-offs”Fewer retries can expose transient failures to callers. More retries can improve success during short faults but consume capacity needed for recovery.
Sources
Section titled “Sources”- Amazon Web Services. “Timeouts, retries, and backoff with jitter.”