<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" 
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:wfw="http://wellformedweb.org/commentAPI/"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
  xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  xmlns:georss="http://www.georss.org/georss"
  xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
  xmlns:media="http://search.yahoo.com/mrss/">
  <channel>
    <title>Blissora Blog</title>
    <atom:link href="https://blissora-blog.netlify.app/feed.xml" rel="self" type="application/rss+xml" />
    <link>https://blissora-blog.netlify.app</link>
    <description>Thoughts, stories and ideas.</description>
    <lastBuildDate>Wed, 22 Jul 2026 09:14:26 GMT</lastBuildDate>
    <language>en</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <generator>Eleventy</generator>
      <item>
        <title>Understanding Latency Percentiles: Why p95 and p99 Matter More Than Average Response Time</title>
        <link>https://blissora-blog.netlify.app/posts/understanding-latency-percentiles-why-p95-and-p99-matter-more-than-average-response-time/</link>
        <dc:creator><![CDATA[Pramila Niroshan]]></dc:creator>
        <pubDate>Wed, 22 Jul 2026 09:14:26 GMT</pubDate>
        <guid isPermaLink="true">https://blissora-blog.netlify.app/posts/understanding-latency-percentiles-why-p95-and-p99-matter-more-than-average-response-time/</guid>
        <description><![CDATA[When monitoring application performance, many dashboards display the average response time. While this seems useful, averages can be misleading because they often hide slow requests that negatively impact real users.


Why Average Response Time Isn&#39;t Enough

Imagine your application processes 100 requests:

 * 99 requests complete in 20 ms
 * 1 request takes 5,000 ms

The average response time is only 69.8 ms, which appears healthy. However, one user still waited 5 seconds, resulting in a poor e]]></description>
        <content:encoded><![CDATA[<p></p><p>When monitoring application performance, many dashboards display the <strong>average response time</strong>. While this seems useful, averages can be misleading because they often hide slow requests that negatively impact real users.</p><h2 id="why-average-response-time-isnt-enough">Why Average Response Time Isn't Enough</h2><p>Imagine your application processes <strong>100 requests</strong>:</p><ul><li>99 requests complete in <strong>20 ms</strong></li><li>1 request takes <strong>5,000 ms</strong></li></ul><p>The average response time is only <strong>69.8 ms</strong>, which appears healthy. However, one user still waited <strong>5 seconds</strong>, resulting in a poor experience.</p><p>This is why relying only on averages can make performance issues difficult to detect.</p><hr><h2 id="what-are-latency-percentiles">What Are Latency Percentiles?</h2><p>Latency percentiles show how response times are distributed across all requests.</p><ul><li><strong>p50 (Median):</strong> 50% of requests are faster than this value. Represents the typical user experience.</li><li><strong>p90:</strong> 90% of requests complete within this time. The slowest 10% take longer.</li><li><strong>p95:</strong> 95% of requests complete within this time. Commonly used for SLAs and performance monitoring.</li><li><strong>p99:</strong> 99% of requests complete within this time. Highlights the slowest 1% of requests.</li><li><strong>p99.9:</strong> Used in large-scale, latency-sensitive systems where even rare slow requests matter.</li></ul><p>For example, if your service handles <strong>1 million requests per day</strong>, a <strong>p99 latency</strong> represents the experience of the slowest <strong>10,000 requests </strong>far from insignificant.</p><hr><h2 id="why-p95-and-p99-are-important">Why p95 and p99 Are Important</h2><figure class="kg-card kg-image-card"><img src="https://blissora-blog.netlify.app/content/images/2026/07/image-1.png" class="kg-image" alt="" loading="lazy" width="1408" height="768" srcset="/content/images/size/w600/2026/07/image-1.png 600w, /content/images/size/w1000/2026/07/image-1.png 1000w, /content/images/2026/07/image-1.png 1408w" sizes="(min-width: 720px) 720px"></figure><p>Users remember slow experiences more than fast ones. Even if most requests are quick, a small percentage of slow responses can significantly affect user satisfaction.</p><p>In distributed systems, a single user request often depends on multiple services such as databases, caches, authentication services, and third-party APIs. Small delays in each service can combine, increasing overall response time a phenomenon known as <strong>tail latency amplification</strong>.</p><p>This is why most Service Level Objectives (SLOs) and Service Level Agreements (SLAs) are defined using <strong>p95 or p99</strong>, rather than averages.</p><h2 id="choosing-the-right-percentile">Choosing the Right Percentile</h2>
<!--kg-card-begin: html-->
<table><tbody><tr><th><span>Percentile</span></th><th><span>Best Used For</span></th></tr><tr><td><strong><span>p50</span></strong></td><td><span>Typical application performance</span></td></tr><tr><td><strong><span>p90</span></strong></td><td><span>Internal dashboards and alerting</span></td></tr><tr><td><strong><span>p95</span></strong></td><td><span>Standard SLA/SLO monitoring</span></td></tr><tr><td><strong><span>p99</span></strong></td><td><span>High-scale, latency-sensitive applications</span></td></tr><tr><td><strong><span>p99.9+</span></strong></td><td><span>Critical systems like finance, telecom, and real-time services</span></td></tr></tbody></table>
<!--kg-card-end: html-->
<p>The right percentile depends on your application's scale and how costly slow requests are to your users.</p><h2 id="common-mistakes">Common Mistakes</h2><p>When working with latency percentiles, avoid these common pitfalls:</p><ul><li><strong>Don't average percentiles across servers.</strong> Percentiles must be calculated from aggregated data.</li><li><strong>Small datasets produce unreliable high percentiles.</strong> A p99 calculated from only 100 requests isn't statistically meaningful.</li><li><strong>Percentiles show that requests are slow, not why.</strong> Combine them with distributed tracing to identify root causes.</li><li><strong>Choose an appropriate time window.</strong> Short windows (1–5 minutes) are better for alerting, while longer windows help identify trends.</li></ul><hr><h2 id="measuring-percentiles">Measuring Percentiles</h2><p>Modern observability platforms provide built-in percentile metrics:</p><ul><li><a href="https://prometheus.io/?ref=ghost-app.devapps.live" rel="noreferrer"><strong>Prometheus</strong></a> using Histograms and <code>histogram_quantile()</code></li><li><a href="https://grafana.com/?ref=ghost-app.devapps.live" rel="noreferrer"><strong>Grafana</strong></a></li><li><a href="https://www.datadoghq.com/?ref=ghost-app.devapps.live" rel="noreferrer"><strong>Datadog</strong></a></li><li><a href="https://newrelic.com/?ref=ghost-app.devapps.live" rel="noreferrer"><strong>New Relic</strong></a></li></ul><p>A typical latency dashboard might look like this:</p><pre><code>p50   : 45 ms
p90   : 120 ms
p95   : 210 ms
p99   : 850 ms
p99.9 : 4200 ms</code></pre><p>A healthy system usually has a gradual increase across percentiles. A sharp jump between <strong>p95 and p99</strong> often indicates tail latency problems that need investigation.</p><h2 id="key-takeaways">Key Takeaways</h2><ul><li>Average response time can hide performance problems.</li><li>Percentiles provide a much clearer picture of real user experience.</li><li><strong>p95</strong> and <strong>p99</strong> are the most valuable metrics for monitoring application performance.</li><li>Tail latency becomes increasingly important in distributed systems.</li><li>Combine percentile metrics with tracing and logging to quickly identify performance bottlenecks.</li></ul><p>Monitoring percentiles instead of averages helps engineering teams detect issues earlier, build more reliable systems, and deliver a consistently better experience for users.</p><hr>]]></content:encoded>
        <media:content url="https://images.unsplash.com/photo-1643917854632-137e2a61310b?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDMxfHxpbnRlcm5ldCUyMHNwZWVkfGVufDB8fHx8MTc4NDE3ODA0MHww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=2000" medium="image">
          <media:title type="html"><![CDATA[Understanding Latency Percentiles: Why p95 and p99 Matter More Than Average Response Time]]></media:title>
        </media:content>
      </item>
  </channel>
</rss>
