Exponential Backoff

Exponential backoff is a strategy for handling retries in systems where repeated, immediate attempts risk making a problem worse—such as when a service is under high load, a network link is unreliable, or a shared resource is congested.

Instead of retrying at fixed intervals, the wait time between retries grows exponentially. This reduces the chance of overloading the system and allows time for transient issues to resolve.

Mathematical Model

The wait time before the n-th retry can be expressed as:

tn=t0×2nt_n = t_0 \times 2^{n}

Where:

  • tnt*n = wait time before the _n*-th retry
  • t0t_0 = base delay (e.g., 1 second)
  • nn = retry attempt count starting from 0

For example, with t0=1t_0 = 1 second:

Retry Attempt nnDelay tnt_nCumulative Wait Time
01×20=11 \times 2^{0} = 1 s1 s
11×21=21 \times 2^{1} = 2 s3 s
21×22=41 \times 2^{2} = 4 s7 s
31×23=81 \times 2^{3} = 8 s15 s
41×24=161 \times 2^{4} = 16 s31 s

Exponential backoff

Jitter

In many implementations, a random “jitter” is added to the wait time to prevent multiple clients from synchronising their retries and causing a surge. This can be represented as:

tn=random(0,t0×2n)t_n = \text{random}(0, t_0 \times 2^{n})

Why It Works

By growing the retry intervals exponentially, the approach turns retry load growth from linear (or constant) into a curve that quickly stretches out over time, avoiding a “retry storm” that could collapse a struggling service.

It is widely used in distributed systems, API calls, and database connections to balance responsiveness with stability, especially under fault conditions.

Created: June 19, 2026Last modified: June 19, 2026