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. 5ร— the median.
63.5 msmean

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

p50meanp95p99
0latency โ†’324 ms
PercentileLatency
p50
50 ms
meanโ‰ˆ p64
63.5 ms
p90
121 ms
p95
156 ms
p99
250 ms
p99.9
424 ms

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