Problem
In fan-out systems the slowest backend determines overall latency, so a rare 1 percent slow response per backend becomes common for the end user. Garbage collection pauses, noisy neighbors and queueing cause slow outliers that averages hide.
Also known as: hedged-requests, tail-at-scale
Reduce p99 latency by sending a duplicate request to another replica when the first is slow.
In fan-out systems the slowest backend determines overall latency, so a rare 1 percent slow response per backend becomes common for the end user. Garbage collection pauses, noisy neighbors and queueing cause slow outliers that averages hide.
Tail latency is the high percentile of response time, for example p99. When one request touches 100 backends and each is slow 1 percent of the time, about 63 percent of user requests hit at least one slow backend. Hedged requests, described in the paper The Tail at Scale, attack this directly.
t=0 send request to replica A
t=p95 no reply yet -> send same request to replica B
first reply wins -> cancel the other
The hedge delay is set from measured latency, typically the p95 of that call, so only about 5 percent of requests are duplicated. The extra load is small, yet requests stuck behind a pause or a hot queue finish on the second replica. A variation is the tied request: send to two replicas at once, each told about the other, and the first to start executing cancels its twin.
Guard the mechanism with a budget, for example hedges may not exceed 5 percent of requests, tracked with a token bucket. Under broad slowdown, the budget empties and hedging stops, which prevents amplification.
Other tail techniques work alongside hedging: set aggressive per-call deadlines, pick the replica with the shortest queue, split large requests into smaller ones, and isolate background work from serving threads.
Small extra capacity for duplicates
Medium: tune delay and budget
Medium: idempotency and cancellation
Hedging during overload doubles traffic and triggers collapse
Duplicate execution of a non-idempotent call
Hedge delay set too low, so most requests are duplicated