RAG 延迟监控:P50/P95/P99
P 是 Percentile(百分位数) 的缩写。
什么是百分位数
P50 / P95 / P99 的意思是:把所有请求的响应时间从小到大排列,排在第 X% 位置的那个值。
假设今天有 1000 条请求,响应时间排好序:
P50 = 第 500 条的响应时间 = 1.2 秒
→ 有 50% 的请求在 1.2 秒内完成
→ 就是"中位数",代表典型用户的体验
P95 = 第 950 条的响应时间 = 3.8 秒
→ 有 95% 的请求在 3.8 秒内完成
→ 代表"大多数用户"的最差体验
P99 = 第 990 条的响应时间 = 8.5 秒
→ 有 99% 的请求在 8.5 秒内完成
→ 代表"极端情况",最倒霉的那 1% 用户的体验
为什么不用平均值?
平均值会被极端值严重拉偏:
10 条请求的响应时间:
1s, 1s, 1s, 1s, 1s, 1s, 1s, 1s, 1s, 100s
平均值 = (9×1 + 100) / 10 = 10.9 秒
→ 看起来很慢,但其实 90% 的用户只等了 1 秒
P50 = 1 秒 → 大多数用户体验很好
P90 = 1 秒
P99 = 100 秒 → 有 1% 的用户遇到了严重问题
平均值掩盖了”大多数用户很好,少数用户很差”的真实情况。百分位数能精确定位是哪个层级的用户在受影响。
三个指标各自关注什么
| 指标 | 关注对象 | 用途 |
|---|---|---|
| P50 | 普通用户的典型体验 | 日常性能基准 |
| P95 | 大多数用户的最差体验 | SLA(服务等级协议)通常以此为准 |
| P99 | 极端情况下的最差体验 | 排查偶发性性能问题、超时风暴 |
实际工程中,P99 突然升高往往是系统出问题的早期信号——比如向量数据库某个节点响应变慢,会先体现在 P99 上,之后才蔓延到 P95 和 P50。所以监控 P99 能更早发现问题。