TP 指标详解:超越 P99
提到性能指标,很多人只知道 P99。但 TP 指标远不止 P99 这么简单。在实际工程中,不同的百分位数有不同的应用场景,理解它们的差异,才能更好地制定性能目标和排查问题。
TP 指标的全景图
TP(Top Percentile)是百分位数的另一种叫法,在监控领域和金融行业更常用。
TP50:快速判断整体水平
TP50 是中位数,表示 50% 的请求比这个值快,50% 比它慢。
特点
- 对极端值不敏感,比平均值更稳定
- 计算简单,适合快速判断
- 无法反映长尾用户体验
适用场景
- 日常监控的「健康状态」指标
- 快速判断系统是否正常
- 作为 TP90/TP99 的补充参考
例子
TP90:内部性能目标
TP90 表示 90% 的请求比这个值快,10% 比它慢。
特点
- 对长尾有一定敏感度
- 通常作为内部性能目标
- 能够反映「大多数用户」的体验
适用场景
- 设置内部性能目标
- 作为 TP99 的补充,用于评估优化效果
- 识别性能退化的早期信号
例子
TP95:行业参考标准
TP95 表示 95% 的请求比这个值快,5% 比它慢。
特点
- 对长尾更敏感
- 通常作为 SLA 目标的参考
- 兼顾大多数用户和长尾用户
适用场景
- 设置 SLA 目标前的参考标准
- 评估用户投诉率与延迟的关系
- 作为 TP99 和 TP90 之间的「中间地带」
TP95 vs TP90 的差异
假设 TP90 = 100ms,TP95 = 150ms:
TP99:SLA 承诺的基石
TP99 表示 99% 的请求比这个值快,1% 比它慢。
特点
- 对长尾非常敏感
- 通常作为对外 SLA 承诺的核心指标
- 能够发现严重的性能问题
适用场景
- 对外 SLA 承诺
- 容量规划的上限参考
- 发现系统异常行为
例子
TP99 的陷阱
TP99 虽然重要,但也有其局限性:
- 瞬时抖动:TP99 是某一时刻的值,下一时刻可能完全不同
- 样本量要求:TP99 需要至少 100 个样本才有意义
- 分布盲点:TP99 相同不代表延迟分布相同
TP999:极端长尾的诊断
TP999 表示 99.9% 的请求比这个值快,0.1% 比它慢。
特点
- 极端长尾指标
- 通常用于发现系统异常
- 不是 SLA 目标,而是诊断依据
适用场景
- 发现偶发的严重延迟问题
- 排查 GC、死锁、慢查询
- 评估系统在极端情况下的表现
例子
TP999 的价值
TP999 突然飙升通常意味着:
- Full GC 发生
- 死锁导致线程等待
- 慢查询超时
- 网络抖动
- 连接池耗尽
TP 与 SLA 的关系
SLA 承诺的层次
不同百分位数对应不同的 SLA 层次:
SLA 计算示例
假设 SLA 承诺「TP99 < 200ms」:
APDEX 评分体系
APDEX(Application Performance Index)是另一种性能评估体系,它将用户满意度分为三个级别:
APDEX 计算公式
例子
假设目标阈值 = 100ms,1000 个请求:
- 700 个请求 < 100ms(满意)
- 200 个请求 100~400ms(可容忍)
- 100 个请求 > 400ms(失望)
APDEX vs TP 指标
指标组合使用
单一指标都不够,需要组合使用:
推荐组合
- 日常监控:TP50 + TP90 + TP99
- SLA 承诺:TP95 + TP99
- 异常检测:TP999 + TP9999
- 用户体验:APDEX + TP99
本章总结
核心要点:
- TP50:快速判断整体水平,中位数指标
- TP90:内部性能目标,大多数用户的体验
- TP95:行业参考标准,SLA 目标前的参考
- TP99:SLA 承诺的基石,绝大多数用户的体验
- TP999:极端长尾的诊断,发现系统异常
- APDEX:用户满意度评分,0~1 的直观指标
理解 TP 指标是制定性能目标和 SLA 承诺的基础。下一节我们将讲解 SLA/SLO/SLI 的三角关系。