TP50、TP90、TP99、TP999

  • TP(Top Percentile)Top百分数,是一个统计学的术语,与平均数、中位数一样。是不是看着这句话很眼熟?
  • 在网上看了很多帖子,是这样解释这些指标的:
  • TP50:满足百分之五十的网络请求所需的最低耗时。
  • TP90:满足百分之九十的网络请求所需的最低耗时。
  • TP99:满足百分之九十九的网络请求所需的最低耗时。
  • TP999:满足千分之九百九十九的网络请求所需的最低耗时。

例子

  • 例子大概是这样写的:
  • 有四次请求耗时分别为:
    10ms,1000ms,100ms,2ms
    那么我们可以这样计算TP99:
    先进行排序,默认从小到大正序排列,排序后的结果:
    2ms,10ms,10ms,1000ms,4次请求中,99%的请求数为4*0.99,进位取整也就是4次(数组长度也是4,取最后一个,有的地方也可以直接取整是3,那么也取数组的第三位,0,1,2,3),满足这全部4次请求的的最低耗时为1000ms,也就是TP99的答案是1000ms。
  • 下边有个简单的事例:
public class MethodInfo {// 方法名private  String name;// 执行耗时private  long   times;// 结束时间private  long   endTimes;public MethodInfo() {}public MethodInfo(String name, long times,long endTimes) {this.name = name;this.times = times;this.endTimes = endTimes;}public String getName() {return name;}public void setName(String name) {this.name = name;}public long getTimes() {return times;}public void setTimes(long times) {this.times = times;}public long getEndTimes() {return endTimes;}public void setEndTimes(long endTimes) {this.endTimes = endTimes;}
}
 // rate 代表百分比 90 传入 0.9 即可  99 就是 0.99private  long  getTP(List<MethodInfo> methodInfos,double  rate){// System.out.println("getTp");// 构建一个临时数组保存 满足1一分钟之内的数据List<MethodInfo>  sortInfo = new ArrayList<>();// 计算最近一分钟的TP90 和 TP99long  endTime = System.currentTimeMillis();long  startTime = System.currentTimeMillis() - 60000;// 遍历列表集合int  length = methodInfos.size();for (int i=0;i<length;i++){//System.out.println("#######");MethodInfo  methodInfo = methodInfos.get(i);if (methodInfo.getEndTimes() >= startTime && methodInfo.getEndTimes() <= endTime){sortInfo.add(methodInfo);}}sortInfo.sort(new Comparator<MethodInfo>() { //正序排列@Overridepublic int compare(MethodInfo o1, MethodInfo o2) {if(o1.getTimes() > o2.getTimes()){return  1;}else if(o1.getTimes() < o2.getTimes()){return -1;}else{return  0;}}});int  index = (int)(sortInfo.size() * rate);//直接取整return sortInfo.get(index).getTimes();}
for(Map.Entry<String,List<MethodInfo>> methodInfos : methodTimes.entrySet()){System.out.println(methodInfos.getKey() +"的TP90:" + getTP(methodInfos.getValue(),0.9) + "毫秒,"+ "TP99:" + getTP(methodInfos.getValue(),0.99)+ "毫秒" );}

TP50、TP90、TP99、TP999简易理解相关推荐

  1. 简易理解设计模式之:责任链模式——OA中请假流程示例

    介绍: 责任链模式属于行为型设计模式.它的定义为:使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,只到有对象处理它为止. 类图: ...

  2. 简易理解设计模式之:桥接模式——穿衣服经典案例2

    介绍: 桥接模式属于结构型模式.它的定义为:将抽象部分与实现部分分离,使它们都可以独立的变化. 类图: Abstraction(抽象化角色):抽象部分,保持对实现部分对象的引用,抽象部分中的方法需要调 ...

  3. 【OpenGl】万向节死锁的简易理解

    [OpenGl]万向节死锁的简易理解 看了一些博文,说的不够容易理解. 我觉得反着理解比较容易.把一些博客里俯仰偏航的顺序倒着来看. 万向节死锁的图片里,旋转顺序绕自身Z(蓝色).自身Y(红色)旋转, ...

  4. TP50 TP90 TP95 TP99 TP999 TP9999

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

  5. Linux 简易理解重定向以及 2>1 的使用

    一.文件描述符及重定向 首先在Linux中自带10种文件描述符,分别对应数字字符0~9,但常用的文件描述符就0.1.2三个,分别对应"文件标准输入"."文件标准输出&qu ...

  6. python ray分布式_分布式框架Ray及RLlib简易理解

    最近阅读了 Ray: A Distributed Framework for Emerging AI Applications RLlib: Abstractions for Distributed ...

  7. ps—简易理解ps图层的各种混合模式

    首先清楚几个问题,混合模式是要有两个图层以上才可以用的,混合模式是选中的图层跟该图层下面的一层图层混合,这里我们讲选中的图层颜色称为混合色,下面的一层图层颜色成为基色,最终通过混合模式混合出来的图层色 ...

  8. 万向节死锁的简易理解

    看了一些博文,说的不够容易理解. 我觉得反着理解比较容易.把一些博客里俯仰偏航的顺序倒着来看. 万向节死锁的图片里,旋转顺序绕自身Z(蓝色).自身Y(红色)旋转,而后绕自身Z(绿色)旋转. 具体可以看 ...

  9. 关于AIOT简易理解.

    提示:本文是自己的理解,并非权威 文章目录 前言 一.AIOT是什么? 二.实现步骤介绍 1.IOT设备开发 2.数据上云 3.AI场景化应用 总结 前言 AI:随着人工智能的不断发展,机器学习这门技 ...

最新文章

  1. 网络流24题之魔术球问题
  2. 阿里云CentOS7.3搭建多用户私有git服务器(从安装git开始)
  3. 不要错过这轮疫情的“洗牌”机会
  4. a jni error has occurred_A-08 幂函数、有理函数、代数函数
  5. python基础入门--input标签、变量、数字类型、列表、字符串、字典、索引值、bool值、占位符格式输出...
  6. 继三星之后 华为折叠屏手机Mate X发售日期或将延期至9月
  7. ce修改服务器的数据库,数据库服务器的调优步骤
  8. 运维测试工作笔记0003---使用Jmeter测试_http接口_高并发测试
  9. Windows 常用的 CMD 命令
  10. mapreduce 和hive 的区别
  11. 【程序员如何买基金 一】基金的优势及分类
  12. fastdb java_FastDB应用开发指南.pdf
  13. Win10设置屏保时间
  14. 用实例配置 linux squid 代理服务器
  15. mac python 连接oracle数据库(mac cx_Oracle.DatabaseError: DPI-1047: )
  16. 如何做好网络推广?软文文案在做网络推广上的策略分享
  17. 网络硬件三剑客 - 集线器、交换机与路由器
  18. 时空-问题集锦(转载)
  19. 原文 葛底斯堡宣言_如何有感情地背下葛底斯堡演说的全文?
  20. Vue双向绑定:原理篇(详细)

热门文章

  1. 尼科彻斯定理(简单易懂)
  2. jsp弹出新窗口代码
  3. 临床试验中edc录入_临床试验中使用EDC的情况?
  4. 【K8s】什么是Docker和K8S(Kubernetes)
  5. 用python输入概率分布,计算信源熵/信息熵
  6. PPT设计思维干货分享(一)
  7. 大数据之 kafka 入门
  8. Win10 如何隐藏控制面板里面的BitLocker 驱动器加密功能
  9. 前端学习笔记02--CSS快速了解
  10. 用浅浅的幸福交换落寞的伤