阅读中 · 0%
阅读设置
什么是P50/P95/P99
编辑2026-10-07·4 分钟阅读·根目录
百分位延迟指标:从 P50、P95 到 P99,如何理解与表达?
未分类
一文看懂百分位延迟:P50、P95、P99 是什么?
在 API 接口、数据库和系统性能监控中,我们经常会看到 P50、P95、P99 这样的指标。
它们用来衡量系统的响应速度,尤其是那些比较慢的请求。
一、什么是百分位延迟?
百分位延迟(Percentile Latency),表示一定比例的请求可以在多长时间内完成。
例如:
- P50 = 100ms:至少 50% 的请求在 100ms 内完成。
- P95 = 200ms:至少 95% 的请求在 200ms 内完成。
- P99 = 500ms:至少 99% 的请求在 500ms 内完成。
简单理解:
| 指标 | 关注什么 |
|---|---|
| P50 | 典型请求有多快 |
| P95 | 较慢的请求有多慢 |
| P99 | 极慢的请求有多慢 |
alt
二、通过一个例子理解
假设某个 API 一共处理了 100 次请求:
| 请求数量 | 响应耗时 | 分布示意 |
|---|---|---|
| 50 次 | 100ms | ██████████ |
| 45 次 | 200ms | █████████ |
| 4 次 | 500ms | █ |
| 1 次 | 2000ms | ▏ |
把这 100 次请求按照响应时间从小到大排序:
| 排序位置 | 响应时间 | 指标 |
|---|---|---|
| 第 50 个 | 100ms | P50 |
| 第 95 个 | 200ms | P95 |
| 第 99 个 | 500ms | P99 |
| 第 100 个 | 2000ms | 最大延迟 |
这就是百分位延迟的基本原理。
注:这里采用最直观的最近秩法。实际监控系统使用的百分位算法可能不同,结果也可能略有差异。
三、为什么不只看平均延迟?
在上面的例子中,平均响应时间是:
(50 × 100 + 45 × 200 + 4 × 500 + 1 × 2000) ÷ 100 = 180ms
平均延迟只有 180ms,看起来系统表现不错。
但是:
- 有 4 个请求耗时 500ms。
- 有 1 个请求耗时 2000ms。
这说明平均值可能掩盖少数请求的延迟问题。
因此,性能监控通常会同时观察平均延迟和百分位延迟。
四、如何表达百分位延迟?
在技术文档和监控系统中,通常采用以下表达形式:
| 表达方式 | 示例 |
|---|---|
| 简写 | P99 = 500ms |
| 英文 | P99 Latency: 500ms |
| 完整描述 | 99% 的请求响应时间不超过 500ms |
| 监控指标名 | http_request_duration_p99 |
更规范的表达还应该包含统计时间窗口。
例如:
过去 5 分钟内,该 API 的 P50 为 100ms,P95 为 200ms,P99 为 500ms。
五、P50、P95、P99 应该关注哪个?
三个指标关注的重点不同:
- P50:了解系统的日常响应速度。
- P95:发现较慢请求带来的体验问题。
- P99:发现长尾延迟,即极少数特别慢的请求。
比如:
某个接口的 P50 一直保持在 100ms,但 P99 从 500ms 突然上升到 3000ms。
这意味着典型请求的响应速度没有明显变化,但最慢的一部分请求变得更慢了。
可能的原因包括数据库慢查询、锁竞争、垃圾回收暂停或下游服务超时。
六、总结
百分位延迟的核心思想是:
不只关心平均响应速度,还要关心有多少请求能够在指定时间内完成。
记住三个关键指标:
- P50: 典型请求的响应速度。
- P95: 较慢请求的响应速度。
- P99: 尾部极慢请求的响应速度。
在实际系统监控中,通常结合 P50、P95、P99、平均延迟、请求量和错误率,才能更全面地判断系统的性能表现。