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

本文最后更新于2018年4月29日,已超过 1 年没有更新,如果文章内容失效,还请反馈给我,谢谢!

=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=

声明: 除非注明,ixyzero.com文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://ixyzero.com/blog/archives/3888.html

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

  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。
    大概需要关注的东西:关键业务节点的关键参数。

hi进行回复 取消回复

电子邮件地址不会被公开。 必填项已用*标注