We use analytics cookies.We use cookies to analyze site traffic and improve your experience.
Loading...
System Design Masterclass · Observability Monitoring
Free preview: the first 2 parts of this 7-part lesson.
Already bought the course? Sign in to read the whole lesson.
this lesson is part of
System Design Masterclass
Unlock this lesson and the 751 other paid lessons
$25 once, by PayPal
See the System Design courseread the rest of this lesson in
System Design Masterclass
Unlock this lesson and the 751 other paid lessons
$25 once, by PayPal
See the System Design coursein Observability Monitoring
This lesson is part of the full System Design Masterclass. Unlock it along with 769 other lessons for a one-time payment.
One-time payment by card or PayPal
Get Lifetime AccessOne-time payment: UPI, card or netbanking
Get Lifetime Access18 Foundation lessons are free, no payment needed. Try them now
It is easy and good
“It is really nice and good Please join the course”
Amazon doesn't optimize for average response time. They optimize for the P99.9, the slowest 0.1% of requests. Why? Because their highest-value customers, the ones with the most purchase history, the fullest carts, the most active wishlists, tend to have the slowest page loads. Their accounts have the most data to fetch, the most recommendations to compute, the most personalization to apply.
If Amazon only looked at the average, those high-value customers would have a terrible experience while the average stayed "fine." The P99.9 is where the money is.
Percentiles tell you what percentage of your users experience performance at or below a given threshold. P50 is the median, half of users are faster, half are slower. P95 means 95% of users are at or below that value. P99 means only 1% of users are slower than that number. Each step toward the tail tells you about an increasingly frustrated minority of your user base.
If you measured 1,000 API responses and sorted them from fastest to slowest:
| Percentile | Position | Value | What It Means |
|---|---|---|---|
| P50 (median) | 500th | 45ms | Half of requests complete in 45ms or less |
| P75 | 750th | 78ms | 75% of requests are within 78ms |
| P90 | 900th | 120ms | 90% are within 120ms. 10% are slower |
| P95 | 950th | 210ms | 95% are within 210ms. 1 in 20 users waits longer |
| P99 | 990th | 890ms | 99% are within 890ms. 1 in 100 users waits nearly a second |
| P99.9 | 999th | 3,400ms | 999 out of 1000 are faster, but 1 user per thousand waits 3.4 seconds |
The gap between P50 and P99 tells you how consistent your service is. If P50 is 45ms and P99 is 100ms, the experience is fairly uniform. If P50 is 45ms and P99 is 3 seconds, something is making a small percentage of requests dramatically slower, cache misses, cold starts, garbage collection pauses, or heavy queries.
Which percentile should you monitor? At minimum: P50 (the typical experience), P95 (where most users land), and P99 (the tail). For high-traffic services: add P99.9. The right choice depends on traffic volume, at 10 million requests/day, P99.9 represents 10,000 slow requests. That's a lot of frustrated users.