Skip to content

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.

Request volume rises after errors begin. Recovery takes longer than expected, and several client layers can multiply one original request into many attempts.

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.

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.

Fewer retries can expose transient failures to callers. More retries can improve success during short faults but consume capacity needed for recovery.

  • Amazon Web Services. “Timeouts, retries, and backoff with jitter.”