tools / fan-out-tail

Fan-out Tail Calculator

Chance a fan-out request waits on at least one slow backend.

Requests that hit the tail

%

Backend must be

Max backends at this q

Key facts

Chance a request is slowP = 1 − (1 − q)^N
Backend target for goal Pq = 1 − (1 − P)^(1/N)
Quick estimateFor small q, P ≈ N · q
AssumesBackends are slow independently of each other

Worked example

A page calls 100 backends in parallel and waits for all of them. Each is slow 1% of the time (its p99).

P = 1 − 0.99^100  ≈ 63%
To keep P at 1%:
q = 1 − 0.99^(1/100) ≈ 0.01%  → each backend must hold its p99.99

Fan-out turns a 1-in-100 event into the normal case. To protect the page, each backend needs a tail 100× tighter.

Ways out

Fewer backends per request, hedged requests to a second replica, or answering with partial results once enough backends reply. Each one cuts the effective N or q.

FAQs

What if slowdowns are correlated?

If backends stall together — a shared dependency, a network blip — P is lower than this formula says, but each incident hits more requests at once.

Does this apply to sequential calls too?

Yes: if a request makes N calls one after another, the chance at least one is slow follows the same formula, and the slow ones also add up in time.

Which backend percentile should I set as an SLO?

Pick the page-level goal first, then use the reverse formula to derive what each backend must deliver.

Sources

  1. Dean, J. & Barroso, L. A. — The Tail at Scale (Communications of the ACM, 2013)

Related