Back to blog
SRE August 13, 2026

Why Average (Mean) Latency is Misleading: P95 and P99 Explained

Why Average (Mean) Latency is Misleading: P95 and P99 Explained

When measuring website and API performance, teams often look at a single metric: average response time (also known as the latency mean). If the average response time is under 150 milliseconds, it is easy to assume that all users are experiencing a fast, responsive interface.

However, in system operations and Site Reliability Engineering (SRE), relying on the mean is a dangerous anti-pattern. Average metrics hide spikes, obscure outliers, and can lead to a false sense of security while a significant portion of your customer base experiences severe lag.

This guide explains the mathematical flaws of mean latency, defines percentiles like P95 and P99, and outlines how to configure alerts to capture real-world user experience.


1. The Mathematical Flaw: Latency is Not Normal

In statistics, the arithmetic mean (average) works best for data that follows a symmetric bell curve (Normal or Gaussian distribution). For instance, human heights are normally distributed.

However, computer network and server response times do not follow a normal distribution. Instead, they follow a long-tailed (often log-normal) distribution.

  • Most requests resolve extremely fast (the head of the curve).
  • A small percentage of requests get stuck due to database connection locks, server cold starts, or packet loss (the long tail of the curve).

Because response times are asymmetrical, a few extremely slow requests can hide behind thousands of fast requests when you run an average.


2. A Simple Outlier Example

Let's look at the math to see how a healthy-looking mean hides a broken user experience.

Suppose your API receives 1,000 requests over a 5-minute interval:

  • 990 requests execute perfectly in 80 milliseconds.
  • 10 requests hit a database lock queue and take 4,000 milliseconds (4 seconds) to resolve.

Let's calculate the average (mean) latency: [\text{Mean Latency} = \frac{(990 \times 80) + (10 \times 4000)}{1000} = \frac{79,200 + 40,000}{1000} = 119.2 \text{ ms}]

An average latency of 119.2ms looks excellent. On your reporting dashboard, the green line is flat and healthy.

However, in reality, 1% of your users experienced a massive 4-second delay, which is slow enough to cause payment webhook timeouts, cart abandonment, or a broken user interface. The average completely erased this issue.


3. What Are Percentiles (P50, P95, P99)?

To see the "long tail" of performance issues, SRE teams use percentiles instead of averages. A percentile represents the threshold below which a specific percentage of requests fall.

P50 (The Median)

  • Definition: The middle value of your sorted response times.
  • Significance: 50% of your requests are faster than the P50, and 50% are slower. It represents the typical experience of an ordinary visitor.

P95 (The SRE Standard)

  • Definition: The threshold below which 95% of your requests fall.
  • Significance: Only the slowest 5% of your users experienced response times longer than this number. This is the industry-standard metric for assessing general application speed under load.

P99 (The Outlier Capture)

  • Definition: The threshold below which 99% of your requests fall.
  • Significance: This captures the worst 1% of your response times. It highlights critical edge-case bottlenecks like server cold starts, memory leaks, or heavy database table locks.

4. How to Configure Alerts for Latency Percentiles

If your SLA (Service Level Agreement) commits to a response time under 500ms, do not write your SLA threshold based on the average. If you do, 5% of your users could be experiencing 3-second delays without triggering your alert limits.

Instead, configure your metrics and alert rules using percentiles:

  1. Set SRE Targets on P95/P99: Design your performance criteria around percentiles (e.g., "P95 response latency must remain under 300ms").
  2. Filter Out Spikes with Time Ranges: To avoid alert fatigue from temporary network hiccups, alert only if P95 latency exceeds your target threshold for a sustained period (e.g., 3 consecutive checks).
  3. Cross-Region Audits: Network latency varies geographically. Ensure your probes test response times from different global regions to capture latency distributions for regional user bases.

5. Latency Distribution Profiling with Pingzo

Averaging metrics away is a major limitation of basic uptime checkers.

With Pingzo, you get precise visibility into your response time distributions:

  • Multi-Region Synthetic Probes: Pingzo sends checks from global nodes, tracking latency metrics individually by location rather than grouping them into a single global average.
  • Percentile Dashboards: View real-time P50, P95, and P99 latency charts directly in your dashboard to isolate performance degradation before it impacts your users.
  • Configurable Alert Triggers: Set custom alert thresholds based on latency limits. If your P95 latency crosses your critical boundary, Pingzo sends alerts to Slack or WhatsApp instantly.
Try Pingzo Free

Know before your users do

Connect official WhatsApp notification channels, Discord webhooks, Telegram bots, and public status pages. Start in 30 seconds.

Create Free Monitor