Server

p50 latency

Also called median latency.

p50 latency is the median response time: half of requests finish faster and half slower. It describes the typical request, not the worst.

How it is measured

Collect response times for a fixed window, sort them, and take the value at the 50th percentile. Use histograms or a metrics tool that computes percentiles from raw samples. Averaging percentiles across servers gives the wrong answer, merge the histograms first.

State the scope: which endpoint, which window, measured where. p50 at the app and p50 at the browser can differ by hundreds of milliseconds because of TLS, DNS and the network.

Worked example

A Laravel API logs 100,000 requests in an hour. Sorted by duration, the 50,000th is 84 ms, so p50 is 84 ms. The mean is 131 ms because a few report requests took 6 seconds and pull the average up.

After a deploy p50 stays at 84 ms but p99 jumps from 900 ms to 3.8 seconds. Watching only the median, nobody notices for two days.

How it differs

p50 latency is the middle of the distribution. p95 latency is the value that 95 percent of requests beat, which shows the slow end. The median excludes what the slowest half experience, and p95 excludes the typical case. Reporting only p50 hides a problem that affects one request in twenty.

Common errors

Reporting the average and calling it the median. Averaging p50 values from different servers. Measuring only successful requests and dropping timeouts. Using p50 as the SLO target. Comparing p50 from different windows and regions.

In practice

Show p50, p95 and p99 together for your top endpoints. Use p50 to see whether the whole site got slower, and use higher percentiles to find the requests that hurt.

See also

p95 latency, p99 latency

Sources

Count this on a real site.

Watch my website