分析服务响应时间分布,如:均值、中位值、P95值、P99值等如何计算

背景

最近看得多,写得少,所谓

学而不思则罔,思而不学则殆

还是得记录笔记,以加强理解。

有篇博客提到服务响应时间各种值之优劣,特记录之。

平均值

我们考察一个服务器的性能,除了QPS数据外,还会考察响应时间,当服务器负载增高时,往往会伴随着响应时间的增长,但是这个值该如何度量,以精准的表现服务器当前之负载呢?

最常用的值为平均值,表示服务的平均响应时间,通过该值我们能够知道服务当前响应的所有请求耗时的平均值。 例如平均耗时为100ms,表示服务器当前请求的总耗时/请求总数量,通过该值,我们大体能知道服务运行情况。 但是对于具体有多少个请求的耗时比100ms要大,大多少,是200ms,还是500ms,还是1000ms,我们无从得知。 而且,平均值这个数据容易掩盖一些异常值问题,比如,我的财富加马云财富的平均值也能过亿,所以,平均值这个数据项过于简单,提供的信息量太少。

那为什么我们通常采用平均值来衡量或者监控服务性能呢?

主要是由于该值容易计算,采用两个变量SN,即可持续计算平均值:

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值。

另外,考虑到数据分布特点,服务耗时异常数据应该只是少数,但是异常值跨度可能很大,大部分耗时数据均靠近正常值,如果直方统计采用等分形式,会导致大量数据堆积在一个直方中,如何解决这个问题?

可以采用非等分的跨度划分方式,例如采用指数形式划分,耗时越低的区间,跨度越小,精度约高。

pps服务器未响应_服务响应时间与分布相关推荐

  1. pps服务器未响应_pps服务器未响应停止播放怎么解决

    在前面小编给大家讲解了一些关于PPS的内容,但是也有网友遇到了新的问题,今天就有网友问到小编,说在利用PPS看电影的时候,PPS服务器未响应停止播放了,问小编怎么解决.下面我们就来看看PPS服务器未响 ...

  2. pps服务器没有响应,为什么pps服务器未响应,停止播放我家用的是Avira AntiVir 控制中心...

    2010-07-28 回答 1.首先在任务管理器里把 ppstream.exe ppsap.exe 进程结束掉 ­ 然后点开始菜单在运行里输入: %APPDATA%\ppStream\skin 找到 ...

  3. 手机503服务器未响应,503服务暂时不可用问题解决方法

    503是一种HTTP状态码,是服务器出错的一种返回状态,由于临时的服务器维护或者过载,服务器当前无法处理请求.这个状况是临时的,并且将在一段时间以后恢复.那么我们遇到503服务暂时不可用应该怎么办呢? ...

  4. pps服务器未响应_PPS影音黄金VIP会员后看节目出现”服务器未响应,停止播放”怎么办...

    由于大多数用户的网络环境都不相同,所以出现的问题虽然提示一样,但造成问题的结果都有出入.有些是因为网络.有些是因为防火墙与杀毒软件的设置失误 造成.有些用户今天看着正常,第2天就不能观看,说明有些安全 ...

  5. 笔记本音频服务器未响应,音频服务未响应未修复怎么办

    191路由网导读:原标题:"音频服务未运行怎么办,详细教您音频服务未运行怎么办"最新电脑问题教程分享. - 来源:191路由网 - 编辑:爱装机. 我们在处理电脑问题的时候,经常会 ...

  6. win10音频服务器未响应,win10 音频服务未响应的解决方法

    最近在调试usb audio设备,由于使用的是自己的audio 设备,所以要频繁的更换采样率,可是 在win10中经常出现一些莫名其妙的问题,今天这个问题就是折腾了我好久才搞定的. 当把usb aud ...

  7. 云服务器网无响应,服务器之家教你dns服务器未响应导致无法上网怎么办

    最近服务器之家在逛网页的时候看到有不少的网友在讨论dns未响应的解决方法,然后服务器之家就给网友们进行解答了这个问题,俗话说"独乐乐不如众乐乐",所以,今天服务器之家我就决定也来和 ...

  8. 饥荒联机版 服务器未响应,饥荒联机版常见问题汇_饥荒联机版常见问题大全_快吧单机游戏...

    饥荒联机版常见问题大全,饥荒游戏自从开放联机之后,各位玩家也相继遇到了很多各式各样的问题,而今天笔者要给大家介绍的就是饥荒联机版常见问题大全.希望能给大家带来一些帮助. 3.找不到没有房间:右边的页面 ...

  9. 电脑连接到网络显示未连接到服务器未响应,电脑dns服务器未响应怎么办?

    原标题:电脑dns服务器未响应怎么办? 电脑使用时间长了,就容易出现各种问题,很难完全去避免.比如在连接网络的时候,出现了无法连接的情况.经过检测,发现是是DNS 服务器未响应导致的.那么,这种情况应 ...

最新文章

  1. [BUUCTF-pwn]——picoctf_2018_shellcode
  2. python 进程池阻塞和非阻塞_python 之 并发编程(进程池与线程池、同步异步阻塞非阻塞、线程queue)...
  3. 4.3 Siamese 网络
  4. Android绘制基础及手写绘制实例
  5. JS 逻辑中断(一)
  6. Spark:一个独立应用
  7. 永磁同步电机的原理介绍
  8. Ubuntu临时修改ip地址
  9. ionic -- 实现根据拼音字母搜索人员
  10. android 打开word pdf,android word 打开pdf文件 word打开pdf文件
  11. (第二版)零基础入门Python小甲鱼-笔记-第一章-p2
  12. 如何手动启动消防广播_消防应急广播的设置要求是怎样的?
  13. python对excel操作简书_python Excel 写
  14. CentOS 官网镜像最新下载地址
  15. Unity Google VR Cardboard 后台挂起时陀螺仪仍然占用问题解决
  16. Codis的安装与使用
  17. Hadoop的三大核心组件
  18. 大众集团成功研发:可移动的电动汽车充电器,网友:太方便了
  19. 【作品展】-- 2011年第十一届挑战杯作品“基于位置的手机即时通信系统的研究与实现”展板设计...
  20. Matlab 透视变换 原理及其代码实现

热门文章

  1. Python应用实战案例-一文通读时间序列在Python中的应用
  2. 使用PCA对特征数据进行降维
  3. 【python进阶】_文件和目录操作
  4. 【图像处理opencv】_Jupyter 更改文件默认保存目录
  5. zookeeper源码分析之三客户端发送请求流程
  6. spring servlet 扩展undertow
  7. 启动模式 和 任务栈
  8. 【复杂网络】用户画像不应脱离社会关系,谈复杂网络的关键技术和应用实践
  9. 【未来可能用到】关于模型的100个问答-part2
  10. 开启 Truffle Ganache  MetaMask交互