What does the average hide?

Latency isn't symmetric โ€” most requests are quick and a few are very slow, so the distribution has a long right tail. Report the mean and that tail vanishes: the average sits down near the median, while the requests that actually hurt live out at the p99A percentile is the latency a given share of requests come in under: p99 = 1% of requests are slower than this. Tail percentiles are what users feel on a bad day. and beyond. Give it a median and a p99 and watch where the mean really falls.

Half of requests finish underms, but the slowest 1% take overms.
That's a tailHow fat the tail is: p99 รท p50. A ratio near 1 is a tight, predictable service; a ratio of 10ร— or more means rare requests dwarf the typical one. 8ร— the median.
149 msmean

The average is beaten by 67% of requests, so it reads barely above the 100 ms median โ€” yet your p99 is 5.4ร— higher. The number you report is not the number that hurts.

p50meanp95p99
0latency โ†’1.1 s
PercentileLatency
p50
100 ms
meanโ‰ˆ p67
149 ms
p90
314 ms
p95
435 ms
p99
800 ms
p99.9
1.6 s

The mean lands among the lower percentiles, not the upper ones โ€” so an SLA written on the average passes while a chunk of real traffic sits in the tail above it. Set targets on p95 / p99, alert on the tail, and treat the mean as a sanity check, never the goal.

a log-normal latency model anchored on your p50 and p99