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 slow | P = 1 − (1 − q)^N |
|---|---|
| Backend target for goal P | q = 1 − (1 − P)^(1/N) |
| Quick estimate | For small q, P ≈ N · q |
| Assumes | Backends 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.