为什么性能监控指标用tp50/90/99等百分位数而非平均数


=Start=

缘由:

之前做的一个项目上线有一段时间了,但一直也没有来得及做统计分析(峰值、平均QPS、……)。最近刚好又被问到了这个事情,所以抽空学习了解一下部分监控指标的概念和含义,方便后续自己做统计分析。

正文:

参考解答:
概念:

TP=Top Percentile,Top百分数,是一个统计学里的术语,与平均数、中位数都是一类。

应用:

TP50、TP90和TP99等指标常用于系统性能监控场景,指高于50%、90%、99%等百分线的情况。

计算/统计方法:

TP50:指在一个时间段内(如5分钟),统计该方法每次调用所消耗的时间,并将这些时间按从小到大的顺序进行排序,取第50%的那个值作为TP50的值;配置此监控指标对应的报警阀值后,需要保证在这个时间段内该方法所有调用的消耗时间至少有50%的值要小于此阀值,否则系统将会报警。

TP90,TP99,TP999与TP50值计算方式一致,它们分别代表着对方法的不同性能要求,TP50相对较低,TP90则比较高,TP99,TP999则对方法性能要求很高。

举例:假设现在有4次请求耗时分别为:
10s
1000s
100s
2s

计算TP百分线的方法就是:

1、先按升序排列 [2s, 10s, 100s, 1000s];

2、找到你需要用做统计的最后一个条目(向高取整)对应的数值,比如:TP50就是第 ceil(4*0.5)=2 个,即 10s ;TP90就是第 ceil(4*0.9)=4 个,即 1000s 。


为什么用百分位数而不是平均数?

待添加

参考链接:

=END=

,

《 “为什么性能监控指标用tp50/90/99等百分位数而非平均数” 》 有 6 条评论

  1. 服务性能监控:USE方法(The USE Method)
    https://blog.alswl.com/2017/11/use-method/
    http://www.brendangregg.com/usemethod.html
    http://www.brendangregg.com/USEmethod/use-rosetta.html
    `
    USE 分别是三个单词的首字母缩写:
      Utilization:使用率,CPU running percent,硬盘的 IO
      Saturation:饱和度,一般偏存储型资源,内存使用,硬盘使用
      Error:错误数

    我们可以为每个资源找到各自的 USE 度量指标,具体的 Check List 清单可以参考 USE Method: Rosetta Stone of Performance Checklists。
    `

  2. 务虚:建立团队的性能文化
    https://www.cnblogs.com/imyalost/p/9649685.html
    `
    首先来看看团队中不同角色,他们对性能的关注点都是什么?然后拆分开,从不同视角聊聊如何针对性的建立团队的性能文化。。。

    不同视角的性能关注点:
    角色视角————性能关注点
    产品————用户数、使用时间、使用场景
    开发————系统架构、代码设计、内存使用、通信方式
    测试————系统性能表现是否满足性能需求指标:TPS/RT/CPU%/Memory%/Success%
    运维————资源使用率、系统容量、扩展性、稳定性
    `

  3. 对业务系统的监控 No.118
    https://mp.weixin.qq.com/s/MWjjOB62QtX4uCWpKVs60A
    `
    cp1 : 业务系统宿主机监控
    cp2 : 数据库监控
    cp3 : 虚拟机或容器健康度
    cp4: 业务系统基础关键参数监控
    cp5: 关键公共依赖系统的监控
    cp6: 关键业务接口系统性监控
    cp7: 监控自动化和可视化
    cp8: 异常数据监控

    大概需要关注的东西:宿主机网络、磁盘IO、CPU load、Memory usage 等。
    大概需要关注的东西:连接池、读/写RT(响应时间)、读/写QPS(每秒请求数)、CPU、网络IO、内存命中率、慢SQL 等。
    大概需要关注的东西:HTTP RT(响应时间)、HTTP QPS(每秒请求数)、HTTP 空闲连接数。对于 Java 类系统来说还有JVM各种参数的监控,比如 各个代的gc时间、总gc次数和时间、堆内存、堆外内存、线程数 等。
    大概需要关注的东西:各个关键接口的成功率、RT(响应时间)、QPS。
    大概需要关注的东西:关键业务节点的关键参数。
    `

  4. 你好,有点不明白, [2s, 10s, 100s, 1000s] 中 tp50 是 10s tp90是 1000s,为啥说 :从性能要求上讲,TP50相对较低,TP90则比较高,明明 1000s响应大于10s啊?应该tp90性能是更低才对吧?,谢谢!

    • 对于Server端来说,响应时间越短越好,即这种情况下10s比1000s要好,这时Server端的性能会更好,所以对Server端的性能要求会更高。

  5. 想要4个9?本文告诉你监控告警如何做
    https://mp.weixin.qq.com/s/qaNWBlDGgE2hNnu6SV4EBg
    `
    在完成监控指标和体系的建设后,告警如何做,成为了一大难题,再好的监控体系,闭环做不好,就无法发挥出很大的作用。因此我们给告警定义一些准则:

    * 告警不要太多,否则会导致“狼来了”。
    * 告警出现时,应当要具体操作某些事情,是亟待解决的。
    * 告警出现时,应当要进行某些智力分析,不应该是机械行为。
    * 不需要人工响应/处理的告警规则,应当直接删除。
    * 告警出现时,你下意识要再观察观察的告警,要直接进行调整。
    * 告警应当足够的简单,直观,不需要猜。

    简单来讲就是告警要少,事件需要解决,处理要人工介入。
    `

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注