TP50、TP90、TP99、TP999详解

概念:TP指标: 指在一个时间段内,统计该方法每次调用所消耗的时间,并将这些时间按从小到大的顺序进行排序,并取出结果为:总次数 * 指标数 = 对应TP指标的值, 在取出排序好的时间。

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

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

举个例子:有四次请求耗时分别为:

10ms,1000ms,100ms,2ms

那么我们可以这样计算TP99:4次请求中,99%的请求数为4*0.99,进位取整也就是4次,满足这全部4次请求的的最低耗时为1000ms,也就是TP99的答案是1000ms。

一、 TP50、TP90、TP99、TP999

TP(Top Percentile)Top百分数,是一个统计学的术语,与平均数、中位数一样。是不是看着这句话很眼熟?对,没错,是我抄过来的。请脑补一个大笑的表情,以达到我这句话的效果,谢谢

在网上看了很多帖子,是这样解释这些指标的:
TP50:满足百分之五十的网络请求所需的最低耗时。
TP90:满足百分之九十的网络请求所需的最低耗时。
TP99:满足百分之九十九的网络请求所需的最低耗时。
TP999:满足千分之九百九十九的网络请求所需的最低耗时。

public static final int TOTAL_RUNS = 1000000;
public static final int TP50 = (int)(TOTAL_RUNS * 0.50);
public static final int TP90 = (int)(TOTAL_RUNS * 0.90);
public static final int TP99 = (int)(TOTAL_RUNS * 0.99);
public static final int TP99_9 = (int)(TOTAL_RUNS * 0.999);
public static final int TP100 = (int)(TOTAL_RUNS * 1);

看完这些解释,我只想说一句。。。。
我看不懂!!!能不能举栗说明一下子!!!

当然,热心的网友朋友们,当然会满足你的要求。

例子大概是这样写的:

有四次请求耗时分别为:
10ms,1000ms,100ms,2ms
那么我们可以这样计算TP99:4次请求中,99%的请求数为4*0.99,进位取整也就是4次,满足这全部4次请求的的最低耗时为1000ms,也就是TP99的答案是1000ms。

你没有猜错,这个栗子也是我偷过来的。
网友们给出的栗子,也是Google到别人的解释。

不知道为什么,刚看这个,看了好多次都没看懂到底是为什么,当然不排除是我笨的原因。
直到,我看到了这个栗子的原版。
**tp90 is a minimum time under which 90% of requests have been served. Imagine you have times:
10s
1000s
100s
2s
Calculating TP is very simple:

sort all times in ascending order: [2s, 10s, 100s, 1000s]
find latest item in portion you need to calculate. For TP50 it will ceil(4.5)=2 requests. You need 2nd request. For TP90 it will be ceil(4.9)=4. You need 4th request.
get time for the item found above. TP50=10s. TP90=1000s**

仔细看上边的解释
TP90:先算出90%的请求是多少,4*0.9进位取整也就是4次
也是满足四次请求的最低耗时,也就是四次请求中,耗时最长的那个时间。
那个排序就是为了让大家更清楚的看到结果。

一、解释

TP=Top Percentile,Top 百分位数。
是统计学中的一个统计值,类似中位数、四分位数等概念。
可以认为 TP90的意思是保证90%请求都能被响应的最小耗时。TP50、TP99、TP999同理。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
以下先看一下Google到的一段解释:
The tp90is a minimum time under which 90% of requests have been served.
tp90 =top percentile 90
Imagineyou have response times:
   10s
   1000s
   100s
   2s
CalculatingTP is very simple:
1.     Sort all times in ascending order: [2s, 10s, 100s, 1000s]
2.     find latest item in portion you need to calculate.
       2.1 For TP50 it will be ceil(4*0.5) = 2 requests. You need 2nd request.
       2.2 For TP90 it will be ceil(4*0.9) = 4. You need 4th request.
3.     We get time for the item found above. TP50=10s. TP90=1000s
依此,翻译过来:
TP99就是满足百分之九十九的网络请求所需要的最低耗时。
举个例子,有四次请求耗时分别为:10ms,1000ms,100ms,2ms
计算TP非常简单:
1.    将所有时间按升序排序:[2s,10s,100s,1000s]
2.    在需要计算的部分中找到需要的项。
       2.1 对于TP50,即ceil(4 * 0.5)=2,您需要第二个请求。
       2.2 对于TP90,即ceil(4 * 0.9)=4,您需要第四个请求。
3.    我们在上面找到对应的时间,TP50 = 10秒,TP90 = 1000秒。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
这个指标主要用于性能监控:
TP指标:指在一个时间段内,统计该方法每次调用所消耗的时间,并将这些时间按从小到大的顺序进行排序, 并取出结果为 : 总次数 * 指标数 = 对应TP指标的序号 , 再根据序号取出对应排序好的时间,即为TP指标。
举例:
假设上一分钟内接口被调用100次,100次的调用耗时分别为:1、2、3...99、100秒。  
我们对耗时进行从小到大排序,形成容量为100的数组A=[1s,2s,3s....99s,100s]  
TP50的计算方式:100*50%=50,所以TP50指标=A[50]=50s
TP99的计算方式:100*99%=99,所以TP99指标=A[99]=99s
TP999的计算方式:100*999%=99.9,99.9进位取整为100,所以TP999指标=A[999]=100s  
配置TP50指标=50s:配置此监控指标对应的报警阈值后,需要保证在某一时间段内该方法所有调用的消耗时间至少有50%的值要小于此阀值,否则系统将会报警;
配置TP99指标=99s:配置此监控指标对应的报警阀值后,需要保证在某一时间段内该方法所有调用的消耗时间至少有99%的值要小于此阈值,否则系统将会报警;
依次类推。
TP90,TP99,TP999与TP50值计算方式一致,它们分别代表着对方法的不同性能要求,TP50相对较低,TP90则比较高,TP99,TP999则对方法性能要求很高。
其实我们在实际应用过程中,首先可对系统调优、压测、调优,并根据业务、性能的要求估算出某接口的所表现出的响应速度能力。然后确定90%的调用所能接受的最高响应时间t1,99%的调用所能接受的最高响应时间t2。 t2必然大于t1。 最后将确定好的指标作为阈值配置到监控系统。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

二、实际应用

TP50为例,TP90TP99TP9999….等依此类推,对于我们工作中的应用有两种:
1.   计算TP50所需要的最短交付时间,所需要的序号设置X,X=单位时间内总次数*TP指标标号,将交付时间升序排列,从而得出TP50为序列第X位的交付时间。
例:2021年1月发生了100次维修,交付时间(天)从小到大排序分别为下表:
  
序号
  
1
2
3
4
50
90
99
100
  
用时
  
2
2
2
3
3
3
4
5
TP50=3天
TP90=3天
TP99=4天
2.   计算达标率,即设置了TP指标后,通过在一段时间内计算得出交付时间阈值,我们可以计为T作为达标标准,从而计算出达到阈值的比例。
例:2020年12月共计发生100次维修,交付时间(天)由小到大排序为下表:
  
序号
  
1
2
3
4
50
90
99
100
  
用时
  
2
2
2
3
3
3
4
5
TP50=3天,此时间值为T,即达标的时间标准。
再计算达标率<=3天的维修次数,可以看到90%的工单达标,所以达标率为90%,但不能说直接说TP50=90%,这样很容易让人混淆。
原文地址:https://www.cnblogs.com/zhangxinglong/p/14324858.html