服务响应时间与分布 P95 P99
服务响应时间与分布
https://zhuanlan.zhihu.com/p/62329762
分析服务响应时间分布,如:均值、中位值、P95值、P99值等如何计算
背景
最近看得多,写得少,所谓
学而不思则罔,思而不学则殆
还是得记录笔记,以加强理解。
有篇博客提到服务响应时间各种值之优劣,特记录之。
平均值
我们考察一个服务器的性能,除了QPS数据外,还会考察响应时间,当服务器负载增高时,往往会伴随着响应时间的增长,但是这个值该如何度量,以精准的表现服务器当前之负载呢?
最常用的值为平均值,表示服务的平均响应时间,通过该值我们能够知道服务当前响应的所有请求耗时的平均值。 例如平均耗时为100ms,表示服务器当前请求的总耗时/请求总数量,通过该值,我们大体能知道服务运行情况。 但是对于具体有多少个请求的耗时比100ms要大,大多少,是200ms,还是500ms,还是1000ms,我们无从得知。 而且,平均值这个数据容易掩盖一些异常值问题,比如,我的财富加马云财富的平均值也能过亿,所以,平均值这个数据项过于简单,提供的信息量太少。
那为什么我们通常采用平均值来衡量或者监控服务性能呢?
主要是由于该值容易计算,采用两个变量S、N,即可持续计算平均值:
S = S + X
N = N + 1
V = S/N
通过该公式,当有新的耗时值X需要考量,很方便的就能算出平均值,就算QPS到几十万/s,也不在话下。
注意,该公式有个隐含问题,即是S增长过快问题,如果QPS过高,X值过大,很容易导致S溢出,从而导致结果计算异常。
可将该公式做如下改造:
Vs = S/N
Vn = (S+X)/(N+1) = (Vs*N+X)/(N+1) = Vs + (X - Vs)/(N+1)
该算法也只需要两个变量,未考量数据X时——平均值Vs、数据个数N 但是,该算法由于不累加S,而只累加N,而N的增长极慢,不易导致溢出问题。
中位值
如上所述,由于平均值不能反映数据分布及极端异常值的问题,可以考虑采用中位值来作为度量。
中位值如何计算?
我们假设某服务在1s内响应了100个请求,耗时为X1、X2 … X100,可以对这100个数按照从小到大的顺序进行排序,在排序后的列表的中间位置的值——即为中位值,假设为150ms。
那这个值,150ms,表示什么意思呢? 它表示,服务器响应的这100个请求里面有50个的请求耗时小于150ms,另有50个请求的耗时大于150ms。
如果,我们有一个服务qps为3万/s,经过计算响应耗时中位值为100ms,那么我们可以推断有1.5万个请求的耗时小于100ms,也就是说我们有一半的用户的响应耗时小于100ms,据此我们就可以评估服务响应性能是否可以满足业务要求。
但是,这个中位值还有另外一个问题,我们只知道还有一半的请求耗时大于100ms,具体是大多少,大200ms,还是500ms,我们无法得知。
P95值与P99值
由于中位值只能反映中位数的问题,不能反馈更多信息,例如,我想知道该服务80%的请求耗时在多少ms以内,这些问题需要额外的数据指标。
P95——响应耗时从小到大排列,顺序处于95%位置的值即为P95值。
还是采用上面那个例子,100个请求按照响应时间从小到大排列,位置为95的值,即为P95值。 我们假设该值为180ms,那这个值又表示什么意思呢?
意思是说,我们对95%的用户的响应耗时在180ms之内,只有5%的用户的响应耗时大于180ms,据此,我们掌握了更精确的服务响应耗时信息。
P99.9值
亚马逊经常采用P99.9值,也就是99.9%用户耗时作为指标,也就是1000个用户里面,999个用户的耗时上限,如果测量与优化该值,即可保证绝大多数用户的使用体验。 至于P99.99值,优化成本过高,而且服务响应由于网络波动、系统抖动等不能解决之情况,故暂不考虑该指标。
如何计算P分位值
如上说过平均值的计算方式,而P值需要将响应耗时从小到大排序,然后取得对应百分位之值。
如果服务qps较低,例如:100/秒,记录这100个耗时数据,然后排序,然后取得P分位值,倒不是难事。 而如果qps较高,例如:30万/秒,如果还是采用记录+排序的方式,可以预见需要消耗大量内存与计算资源。
有没有简单的计算方式呢?
可以采用直方图来进行计算,该计算方式虽不是完全准确值,但精度非常高,误差较小。
直方图需要界定两个直方之间的跨度,一般采用等分形式,例如对于耗时统计需求,我们可以假定一个耗时上界,然后等分,比如划分成100个区间,对于每个响应耗时落入对应的直方,如下图:
这样就避免了对全部数据进行排序,只需要根据各个直方中的数据数量,即可计算出95%位置位于哪个直方,然后在该直方内部采用插值方法,计算出P95值。
另外,考虑到数据分布特点,服务耗时异常数据应该只是少数,但是异常值跨度可能很大,大部分耗时数据均靠近正常值,如果直方统计采用等分形式,会导致大量数据堆积在一个直方中,如何解决这个问题?
可以采用非等分的跨度划分方式,例如采用指数形式划分,耗时越低的区间,跨度越小,精度约高。
服务响应时间与分布 P95 P99相关推荐
- 服务响应时间与分布(p99指标)
分析服务响应时间分布,如:均值.中位值.P95值.P99值等如何计算 平均值 我们考察一个服务器的性能,除了QPS数据外,还会考察响应时间,当服务器负载增高时,往往会伴随着响应时间的增长,但是这个值该 ...
- pps服务器未响应_服务响应时间与分布
分析服务响应时间分布,如:均值.中位值.P95值.P99值等如何计算 背景 最近看得多,写得少,所谓 学而不思则罔,思而不学则殆 还是得记录笔记,以加强理解. 有篇博客提到服务响应时间各种值之优劣,特 ...
- P95、P99.9百分位数值——服务响应时间的重要衡量指标
前段时间,在对系统进行改版后,经常会有用户投诉说页面响应较慢,我们看了看监控数据,发现从接口响应时间的平均值来看在500ms左右,也算符合要求,不至于像用户说的那么慢,岁很费解,后来观察其它的一些指标 ...
- php分布式微服务开发_分布式微服务架构
学习.跳槽涨薪?请关注 随着业务的不断发展, 用户体量的快速扩张. 从单体/垂直架构转移到分布式/微服务架构是自然而然的选择. 01 分布式理论 分布式理论是分布式系统的基础, 在任何情况下分布式系统 ...
- 分布式微服务学习总结——分布式微服务概述
文章目录 一.前言 二.一个传统的App发展进程 三.为什么要用分布式微服务? 四.什么是分布式.微服务? 1.微服务是什么? 2.微服务架构是什么? 3.分布式是什么? 4.微服务架构和分布式的关系 ...
- java响应很慢排插_服务响应时间慢:Java SecureRandom和/ dev / random - java
我正在尝试调试Tomcat上部署的应用程序提供的一些慢速响应. 现在,我主要关注SecureRandom和/dev/random(其他一些可能的原因已被调查并排除). 模式如下: 第一个调用恰好在To ...
- 如何使用 Kubernetes 监测定位慢调用
监控作者:李煌东 大家好,我是阿里云的李煌东.今天我为大家分享 Kubernetes 监测公开课第四节,如何使用 Kubernetes 监测定位慢调用.今天的课程主要分为三大部分,首先我会介绍一下慢调 ...
- 基于docker 如何部署surging分布式微服务引擎
1.前言 转眼间surging 开源已经有1年了,经过1年的打磨,surging已从最初在window 部署的分布式微服务框架,到现在的可以在docker部署利用rancher 进行服务编排的分布式微 ...
- springboot怎么杀进程_线上服务平均响应时间太长,怎么排查?
线上服务平均响应时间太长,怎么排查? https://xie.infoq.cn/article/914b5c56000a3880016abd8d6 前言: 最近线上环境某个接口服务响应时间偏长,导致用 ...
最新文章
- Python数据科学-技术详解与商业实践视频教程
- linux tar压缩排除某个文件夹或者文件
- cannot find any entry in order attachment link
- Spring Data Solr教程:配置
- 三星Galaxy Z Flip 3渲染图:更窄边框 铰链升级
- java 的记住用户名和密码,JAVA--高级基础开发Cookie实现记住用户名和密码
- 2018 n1ctf easy_hard_php 攻击流程图
- 【Access2007】将Excel表导入至Access2007的当中一张已存在的表之中
- MES系统是什么?MES系统的主要功能是什么?看完本文就知道
- 计算机网络原理最详细解说
- 路由器连接、静态路由配置实例
- 面试题:用两个栈实现一个队列 Java语言实现
- cad文字递增快捷键_cad文字修改快捷键是什么,Auto CAD文字修改快捷键是什么?
- 考研英语二重要词汇整理
- How to Register/Update Ad Muncher using TOR
- 家用汽车维修3:基于OBDII的故障分析
- 7.7 Introduce Foreign Method 引入外部方法
- python3爬虫数据清洗与可视化实战pdf百度云_Python 3爬虫、数据清洗与可视化实战_PDF电子书...
- 从来不是别人的不幸和痛苦
- 30秒教会您Orange一键资源采集功能
热门文章
- ElasticSearch、kibana、ik、pinyin下载安装
- 2022年软件测试还能不能干?看看平均薪资你就懂了
- 解决插入U盘不显示盘符问题,最有效,最简单!!!
- animate.ccss_引入CCSS(组件CSS)
- java 学习心得笔记
- OpenJudge小组NOI / 1.1编程基础之输入输出10:超级玛丽游戏(C++C语言Python)
- (转贴)佛祖说出的爱情箴言
- SAP Hardcode(硬码)的处理方法
- 网吧40台无盘服务器的配置,带80-120台的网咖无盘服务器配置 | 专业网吧维护
- 2021年高处安装、维护、拆除报名考试及高处安装、维护、拆除考试试卷