原文链接:

https://www.dynatrace.com/news/blog/why-averages-suck-and-percentiles-are-great/

google翻译结果:

为什么平均值和百分位数都很棒

曾经监视或分析过应用程序的任何人都使用或曾经使用平均值。它们易于理解和计算。我们倾向于忽略那幅平均世界涂料的图画有多错误。为了强调这一点,让我给您一个我最近在报纸上看过的表演空间之外的真实例子。

文章解释说,欧洲某个地区的平均工资为1900欧元(很明显,这在该地区将是相当不错的!)。但是,当仔细观察时,他们发现大多数人,即十分之九的人,仅能赚到1000欧元左右,而一个人却能赚到10.000欧元(我当然简化了,但您明白了)。如果您做数学运算,您会发现平均工资确实是1900,但是我们都可以同意这并不代表“平均”工资,因为我们会在日常生活中使用这个词。因此,现在让我们将此思想应用于应用程序性能。

平均响应时间

到目前为止,平均响应时间是应用程序性能管理中最常用的指标。我们假定这代表一个“正常”事务,但是,只有在响应时间始终相同(所有事务以相同的速度运行)或响应时​​间分布大致呈钟形时,这才是正确的。

贝尔曲线代表响应时间的“正态”分布,其中平均值和中位数相同。我很少出现在实际应用中

在贝尔曲线中,平均值(中位数)和中位数相同。换句话说,观察到的绩效将代表交易的大部分(一半或一半以上)。

实际上,大多数应用程序的异常值很少。统计人员会说曲线长尾巴。长长的尾巴并不意味着很多缓慢的交易,但是很少有比正常交易速度慢的交易。

这是典型的响应时间分布,离群值很少但很重-尾巴很长。此处的平均值被长尾巴拖到右侧。

我们认识到,平均值不再代表交易的大部分,而是可以比中位数高很多。

现在,您可以辩称,只要平均值看起来不比中位数好,这不是问题。我不同意,但是让我们看一下我们许多客户遇到的另一种现实情况:

这是另一个典型的响应时间分布。在这里,我们有很多非常快的交易将平均值拖到实际中位数的左侧

在这种情况下,相当大比例的事务非常非常快(10%到20%),而大部分事务却慢了好几倍。中位数仍然可以告诉我们真实的情况,但是突然之间的平均值看上去比我们大多数交易实际上要快得多。这在搜索引擎中非常典型,或者在涉及到缓存时,某些事务处理非常快,但大部分操作是正常的。这种情况的另一个原因是交易失败,尤其是交易失败很快的交易。由于用户错误或验证错误,许多实际应用程序的故障率均为1-10%。这些失败的交易通常比真实的交易快几个数量级,因此平均水平失真。

当然,性能分析师并不愚蠢,而是定期尝试使用较高频率的图表进行补偿(通过肉眼观察较小的聚合来进行补偿),并采用最小和最大的观察响应时间。但是,通常只有在非常了解应用程序的情况下才能执行此操作,那些不熟悉应用程序的人可能会容易误解图表。由于所需的知识的深度和类型,很难将您的分析结果传达给其他人–考虑一下IT团队之间有多少争论。那是在我们甚至考虑与业务利益相关者进行沟通之前!

到目前为止,更好的指标是百分位数,因为它们使我们能够了解分布。但是在研究百分位数之前,让我们看一下每个生产监视解决方案中的关键功能:自动基线和警报。

自动基准和警报

在现实环境中,性能很差时会引起注意,并且会对业务和用户产生负面影响。但是,我们如何快速识别性能问题以防止负面影响?由于总是有一些交易,因此我们无法提醒每笔缓慢的交易。此外,大多数运营团队必须维护大量不熟悉所有应用程序的应用程序,因此手动设置阈值可能不准确,非常痛苦且耗时。

业界提出了一种称为自动基准的解决方案。基准计算可以计算出“正常”性能,并且仅在应用程序运行速度变慢或产生比平常更多的错误时提醒我们。大多数方法依赖于平均值和标准偏差。

在不涉及统计细节的情况下,该方法再次假设响应时间分布在钟形曲线上:

标准差代表所有交易的33%,平均值为中间值。2xStandard Deviation代表66%,因此大多数情况下,外部的一切都可以视为异常值。但是,大多数现实情况并非一帆风顺。

通常,超出标准偏差2倍的交易将被视为缓慢并捕获以进行分析。如果平均值发生明显变化,则会发出警报。在钟形曲线中,这将占最慢的16.5%(您当然可以对其进行调整),但是,如果响应时间分布不代表钟形曲线,则它会变得不准确。我们要么以许多误报为最终结果(比平均速度慢很多的交易,但当看曲线处于标准范围之内),或者我们错过了很多问题(误报)。此外,如果该曲线不是钟形曲线,则平均值可能与中位数相差很大,对此类平均值应用标准偏差可能会导致与您预期的结果完全不同!

为什么我爱百分位数

一个百分位数告诉我正在查看曲线的哪一部分以及该度量代表多少笔交易。要形象地看一下下面的图表:

该图表显示了第50个百分点和第90个百分点以及同一笔交易的平均值。它表明,平均值受到第90个因素的影响更大,因此受异常值的影响较大,而不受交易总量的影响较大

绿线代表平均值。如您所见,它非常不稳定。另两个线表示50 个和90 个百分位数。如我们所见,第50 个百分位数(或中位数)相当稳定,但有几次跳跃。这些跳跃表示大多数交易(50%)的实际性能下降。第90 个百分位数(这是“尾巴”的开始)更加不稳定,这意味着异常值的缓慢程度取决于数据或用户行为。重要的是,平均值受到第90 个百分位,尾部而不是大部分交易的影响(拖累)。

如果响应时间的第 50 个百分位数(中位数)为500毫秒,则意味着我的交易的50%比500毫秒快或快。如果同一笔交易的第 90 个百分位数是1000毫秒,则意味着90%的速度或快或慢,只有10%的速度或快。在这种情况下,平均值可能低于500ms(在较重的前曲线上),更高(较长的尾巴)或介于两者之间。百分位数使我对现实世界的表现有了更好的了解,因为它向我展示了我的响应时间曲线的一部分。

正是由于这个原因,百分位非常适合自动基线。如果第50个百分位数从500毫秒变为600毫秒,我知道50%的事务性能会下降20%。您需要对此做出反应。

在许多情况下,我们看到在这种情况下,第75或第90个百分位数根本没有改变。这意味着缓慢的交易不会变慢,只有普通的交易会变慢。在这种情况下,平均值可能根本没有移动,具体取决于您的尾巴有多长!

在其他情况下,我们看到第98个百分位数从1秒降为1.5秒,而第95个百分位数稳定在900毫秒。这意味着您的应用程序总体上是稳定的,但是一些异常值变得更糟,无需立即担心。基于百分位数的警报不会遭受误报,波动性要小得多,并且不会错过任何重要的性能下降!因此,使用百分位数的基线方法不需要大量调整变量即可有效工作。

下面的屏幕截图显示了特定事务的中位数(第 50 个百分位数)从约50ms跳到约500ms,并触发了警报,因为该警报显着高于计算的基线(绿线)。另一方面,标有“响应时间慢”的图表显示了同一笔交易的第 90 个百分点。这些“异常值”还显示了响应时间的增加,但不足以触发警报。

在这里,我们看到了一个自动基准基线仪表板,在第50个百分位数处存在违规情况。违规行为很明显,同时第90个百分位(右上图)没有违反。因为离群值比交易的总体速度慢得多,所以平均数会受到它们的影响,并且反应不会像第50个百分位数那样剧烈。我们可能错过了这种明显的违反!

我们如何使用百分位数进行调整?

百分位数也非常适合调优,并为您的优化提供特定目标。假设我的应用程序中的某些内容通常太慢,我需要使其更快。在这种情况下,我想集中精力降低第90个百分点。这将确保应用程序的总响应时间减少。在其他情况下,我的异常值太长了,我想集中精力降低响应时间,使其超出第98个或第99个百分点(仅异常值)。我们看到许多应用程序对于第90个百分位数具有完全可接受的性能,而第98个百分位数的性能更差。

另一方面,在面向吞吐量的应用程序中,我希望非常快地完成大部分事务,同时接受优化会使一些异常值变慢的事实。因此,我可能会确保尝试保持第90个百分位数稳定或不会变得更糟的同时降低第75个百分位数。

我无法用平均值,最小值和最大值进行相同类型的观察,但是使用百分位数确实很容易。

结论

平均值过于简单和一维,因此无效。百分位数是理解应用程序实际性能特征的一种非常简便的方法。它们也为自动基线,行为学习和正确关注应用程序优化提供了良好的基础。简而言之,百分位数很棒!

为什么平均值(Averages)和百分位数(Percentiles)都很棒相关推荐

  1. 探店「无聊猿」BAYC 主题餐厅:食物都很棒,口味超预期,有点小贵

    来源:decrypt 原文作者:Jason Neslon 翻译:Odaily 星球日报 Moni 四月初,一家名为"Bored & Hungry"的主题餐厅开张了. 这家餐 ...

  2. 清华大学计算机系哪个专业就业前景最好,清华大学有3个专业,是世界第一,实力和就业前景都很棒...

    在我们国家哪个大学最好?很多部分回答清华大学,当然,剩下的人也许可以说是北京大学,清华大学作为我国顶尖高等学府之一,在学生的生源.教育资源.学术研究等方面,也比其他大学先入为主,在众多大学排行榜中,清 ...

  3. Biu~送你 20 个提供远程工作的网站,都很棒

    ⭐️ 本文首发自 前端修罗场(点击即可加入),一个专注 Web 技术.答疑解惑.面试辅导.职业发展的社区.现在加入,即可参与打卡挑战,挑战成功即可获取一次免费的模拟面试机会,进而评估知识点的掌握程度, ...

  4. 写作就像升级打怪,4个实战技巧让你“写什么都很棒”!

    小白第一次写文案,真是各种无措,都不知道该从什么地方下手,只好看大神的经验,然后自己琢磨. 几乎所有以写作为职业的人,都会遭遇这样两个阶段性困境:一开始是不知道如何下笔的"迷惘期" ...

  5. 计算机专业 演讲 就业,学计算机专业,去北邮,还是北理工?学姐:就业都很棒,985更好...

    关注我的人都知道,我这个人喜欢给人推荐的专业就是计算机,可以说现在工科专业最好就业,毕业待遇最高的就是计算机了.为何呢? 因为计算机专业现在能创造价值,能创造利润,所以待遇水涨船高.那么有人问,学计算 ...

  6. 写给普通人看的自媒体分享|万事开头难,勇于分享自己,我们都很棒!

    相信自媒体这个词对于我们任何一个人来说都不陌生了,到底什么是自媒体呢?从名称属性来看,很简单,就是自己做自己的媒体,自己将自己的东西分享出来,就是自媒体. 那么说的实际一点,对于我们普通人来说,到底做 ...

  7. 界面/功能都很惊艳:iPad版Office上手体验

    iPad版Office顾名思义是专为iPad设计的Office应用,它包括Word.Excel和PowerPoint三大组件,需要单独安装.目前iPad版Office已经在iTunes中上架,可以免费 ...

  8. jquery 图像滑块_10个很棒的jQuery图像滑块插件

    jquery 图像滑块 The introduction of jQuery has contributed a lot in making the overall process of websit ...

  9. 为什么“动物杂交”很棒,为什么要玩

    Nintendo 任天堂 The world is a stressful place right now. If you feel like you need a holiday, you shou ...

最新文章

  1. synchronsized修饰方法的使用
  2. python表单防重复提交_防止二次提交(重复提交)
  3. 并发设计模式之生产者消费者设计模式
  4. 支持5G的iPhone SE Plus或将于明年面世
  5. C++编程实现单链表的逆置
  6. java实现栈的数据结构
  7. 不要放弃!“软考论文”一点也不难
  8. 禁用EnableViewState和启用EnableViewStat时请注意
  9. 努力不是为了追赶别人,只是为了超越自己
  10. 电商项目:畅购商城4.0
  11. 安全产品的部署方式及位置
  12. 如何在 Python3 中对列表 通过比较排序(不懂就问)?
  13. 智能运维探索:有一种多指标异常检测方案,你可能没用过...
  14. 对于大型公司项目平台选择j2ee的几层认识(一)
  15. 视频会议turbomeeting支持高度灵活桌面共享
  16. java tps 优化_高tps下,java性能调优
  17. c语言调试时出现的三种错误,C语言课件 第十四章 常见错误和程序调试
  18. Mac安装sshpass
  19. 大数据告诉你梅西如何制霸足坛!
  20. 5 款非常好用的 Docker 工具

热门文章

  1. access中本年度的四月一日_有朝一日重逢,定会深深地相拥 |为你读诗
  2. 手机CAD3D 建模APP:CAD 建模号(WuWeido)使用效果
  3. 设计齿轮时为何齿数不能小于17?
  4. python合并多个excel表格
  5. Realtek 8852BE Think Book 14 + 在Arch Linux下安装网卡驱动
  6. wx-medit一个带编码转换的16进制编辑器
  7. JS缓存与浏览器缓存技术详解 学习笔记
  8. pheatmap进行热图绘制
  9. 桂林阳朔游10月7日(续上)
  10. dnf 运行系统linux,在Linux系统中使用dnf命令安装IceWM,一款非常酷的桌面