Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >(翻译)性能监控之百分位数监控

(翻译)性能监控之百分位数监控

作者头像
高楼Zee
发布于 2021-05-11 04:12:49
发布于 2021-05-11 04:12:49
1.8K0
举报
文章被收录于专栏:7DGroup7DGroup

原文链接:https://www.adfpm.com/adf-performance-monitor-monitoring-with-percentiles/

一、前言

性能监控中什么是最好的度量—平均数还是百分位数?从统计学上讲,有很多方法可以确定应用程序提供的整体体验有多好。平均值被广泛使用。它们很容易理解和计算——但它们可能会产生误导。 这篇文章是关于百分位数的。我将解释什么是百分位数,以及如何使用它们更好地理解应用程序性能。与平均值相比,百分位数告诉我们应用程序响应时间有多一致。百分位数可以做出很好的近似,可用于趋势分析,SLA 协议监视以及每天评估/对性能进行故障排除。

服务级别协议(英语:service-level agreement,缩写 SLA)也称服务等级协议、服务水平协议,是服务提供商与客户之间定义的正式承诺。SLA的概念,对互联网公司来说就是网站服务可用性的一个保证。

二、平均值如何造成误导

我们可以从平均数得出错误的结论。例如:让我们假设一个国家的工人的平均月薪在 2000 美元左右(这似乎不算太坏)。然而,仔细观察我们就会发现,这个国家的大多数人都是外来务工人员,也就是 10 个人中有 9 个人是外来务工人员。他们只赚 1000 美元左右。每 10 个(当地居民)中就有 1 个月能挣11000美元左右(这太简单了,但你懂的)。如果你计算一下,你会发现这个数字的平均值确实在 2000 年左右,但我们都能理解,这并不代表一个现实的“平均”工资。这也适用于统计监控应用程序性能和监控 SLA 协议。非常高的值对平均值的影响非常大。在现实中,大多数应用程序都有一些非常重要的异常值,这些异常值对平均值的影响很大。

三、百分位数说明

当您想从高级角度了解应用程序的执行情况时,理解百分位数的概念是很有用的。百分位是统计中使用的一种度量,表示一组观察中某一特定百分比的观察值低于该值。例如,低于 90 %响应时间值的 HTTP 请求的响应时间称为 9 0百分位响应时间。下面的截图是 3.0 秒(所以 90 %的请求都是在 3.0 秒或更短的时间内处理的:

要获得某个单击操作的 90 %响应时间值,请按递增顺序对该单击操作发起的请求的所有响应时间值进行排序。把这一组的前 90 %拿出来。该集合中具有最大值的响应时间是单击操作请求的 90 %。

假设对于一个单击操作,有 10 个HTTP响应时间值可用:1、2、3、4、5、6、7、8、9和 10 秒。排序之后,如果我把 90 %的响应时间值作为一个单独的集合取出来,我将得到:1、2、3、4、5、6、7、8和 9。这里的 9 是最大值,因此是该点击操作的 90 %值。

当然,我们希望尽可能多的 HTTP 请求都有非常快的响应时间;所以,在一个理想的世界里,第 50、95、99 甚至是第 100 百分位的人会尽可能快。

四、百分比在性能监控

请看 2018 年 6月月度概述的百分位数图表(右下角):

图中用蓝色表示平均响应时间,用黑色、灰色和浅灰色绘制第 50、90 和 95 百分位数:

x 轴为 2018 年 6 月的天数,y 轴为 HTTP 响应时间(以秒为单位)。

我们可以看到以下模式:

  • 第 50 百分位的响应时间大约是 1 秒(对于网页中的某个点击动作)。这意味着 50 %的 HTTP 请求在 1 秒或更短的时间内得到处理
  • 第 90 百分位大约是 2.75 秒( 90 %在 2.75 秒内处理)
  • 第 95 百分位在 3.25 秒内达到最大值(95 %在 3.25 秒内处理)
  • 平均响应时间大约是 2.0 秒(蓝线)。周二(6月5日、12 日、19 日和 26 日)的峰值约为 2.5 秒
  • 周末的平均响应时间比工作日( 2.0 秒)低 1.6 秒。
  • 我们可以看到,在周二,当平均反应时间达到峰值时,而第 50、90 和 95 百分位则更稳定

这告诉我们什么?

  • 可能有一些非常慢的请求(外围程序)对平均值有很大的影响。在这种情况下,最终用户在星期二运行许多非常慢的报告。周二是一种“报告日”,平均响应时间“混乱”。
  • 这完全取决于我们的 SLA 协议以及我们的应用程序必须执行得多好。如果对于您的应用程序或 SLA 协议,有许多响应时间在2.0 到 3.25 秒之间的 HTTP 请求是可以接受的,那么您可能做得很好。然后,除了分析异常缓慢的请求( HTTP 请求中耗时超过 3.25 秒的 5 %)并确定是否可以提高它们的速度外,您无需做太多工作。
  • 如果您需要在 2.0 秒内完成大多数 HTTP 请求,那么您需要做大量的工作来优化您的系统,因为如此多的请求花费的时间超过2.0 秒。

五、月概述-活跃用户和会话

一个关于活动终端用户和 HTTP 会话的图表——这对于评估一个托管服务器上活动的终端用户和会话数量或所有托管服务器上活动的终端用户和会话数量非常有用。稍后,我们可以将这些值性能监控图中的所有其他指标进行比较,如 JVM、SLA 协议指标、在层中花费的时间等,但现在还可以将其与百分比进行比较:

x 轴为 2018 年 6 月的天数,y 轴为活动会话数和最终用户数:

我们可以看到以下模式:

  • 对于大多数终端用户和会话来说,周二是最繁忙的日子;我们在 2018 年 6 月 5 日、12日、19 日和 26 日看到峰值
  • 在最繁忙的一天(6月19日),有超过80个唯一的 HTTP 会话处于活动状态,70 个唯一的最终用户。
  • 周末很少有终端用户活动(大约 10 个独立终端用户,大约 15 次会话)

六、趋势分析

我们可以在各种绩效评估中使用百分位数。特别是对于新版本发布后的回归和趋势分析。我们真的提高了性能吗?有时在新版本发布后性能会上升或下降——如果我们能够看到并认识到这一点将会很有用。如果是的话,第 50、90 和 95 百分位线应该在您提高生产性能后减少——这意味着更快的响应时间:

如图所示。6月17日发布了一个新的版本,据说性能有所改善。在那之后,在6月剩下的几天里,我们看到平均响应时间,第 50、90 和 95 百分位数下降了——这表明新版本确实提高了性能。

七、周、日、小时概述

与每月的方式相同,周、日和小时的终端用户/会话和百分比概述。以下是一个关于 Day 概述的例子:

八、结论

与平均值相比,百分位数告诉我们应用程序响应时间有多一致。 当平均响应时间看起来非常高,单个数据集看起来很正常时,这对于在不受异常缓慢请求影响的情况下分析性能非常有用。 百分位数非常适合用于趋势分析、SLA 协议监控和日常性能评估。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-05-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 7DGroup 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
监控系统的四个黄金指标
最近被问到一个问题,是关于监控系统的4个黄金信号(也被称为黄金指标)的,不太记得了,看了一些资料,做个笔记。
panzhixiang
2024/10/30
3440
Sentry Web 性能监控 - Metrics
Apdex 是一种行业标准指标,用于根据您的应用程序响应时间(response time)跟踪和衡量用户满意度(satisfaction)。Apdex 分数提供特定 transaction 或端点中满意(satisfactory)、可容忍(tolerable)和失败(frustrated)请求的比率。该指标为您提供了一个标准来比较 transaction 性能,了解哪些可能需要额外优化或调查,并为性能设定目标。
为少
2021/09/17
2.1K0
Micrometer中0.5 0.9 0.99三个百分位数详解
Micrometer的Timer类中的publishPercentiles方法使用0.5, 0.95, 0.99这三个百分位数,是因为它们在性能监控和SLA(Service Level Agreement,服务等级协议)指标测量中具有特定的意义和普遍应用。
johnhuster的分享
2024/05/26
1920
『数据密集型应用系统设计』读书笔记(一)
这本书一直在我的待读列表,但是一直没有机会拜读,直到最近 2021 年已经快要过去,感觉需要在年末提升一下自己。边读边做一下笔记,留待后用。
1ess
2021/12/17
6510
系统架构设计(3)-可扩展性
即使系统现在可靠,不代表将来一定可靠。发生退化的最常见原因是负载增加:并发用户从最初的10,000 增长到 100,000或系统目前处理数据量超出之前很多倍。
JavaEdge
2022/06/06
1K0
系统架构设计(3)-可扩展性
【性能工具】LoadRunner性能测试-90%响应时间
解决方案:第90 个百分位是90%的数据点较小的值。 第 90 个百分位是统计分布的度量,与中位数不同。中位数是中间值。中位数是 50% 的值较大和 50% 较小的值。第 90 个百分位告诉您 90% 的数据点较小而 10% 较大的值。 统计上,要计算第 90 个百分位值: 1. 按事务实例的值对事务实例进行排序。 2. 删除前 10% 的实例。 3. 剩下的最高值是第 90 个百分位数。 示例: 有十个事务“t1”实例,其值为 1、3、2、4、5、20、7、8、9、6(以秒为单位)。 1. 按值排序——1,2,3,4,5,6,7,8,9,20。 2. 删除前 10%——删除值“20”。 3. 剩下的最高值是第 90 个百分位数——9 是第 90 个百分位数。 PS :这里有点类似某些比赛的评分规则中,去掉了最高分; 第 90 个百分位值回答了以下问题:“我的交易中有多少百分比的响应时间小于或等于第 90 个百分位值?” 鉴于上述信息,以下是 LoadRunner 如何计算第 90 个百分位数。 在分析 6.5 中: 事务的值在列表中排序。 90% 取自值的有序列表。取值的地方是 将数字舍入到小值:0.9 *(值的数量 - 1)+ 1 在 Analysis 7 及更高 版本中:每个值都计入一个值范围内。例如,5 可以在 4.95 到 5.05 的范围内计数,7.2 可以在 7.15 到 7.25 的范围内计数。90% 取自其中和之前的交易数量 >= ( 0.9 * 值数量) 的值范围。 方法的这种差异可能导致不同的 90% 值。同样,这两种方法都会导致第 90 个百分位定义的正确值。但是,计算这些数字的算法在 LoadRunner 7 及更高版本中发生了变化。因此 ,系统有性能平均响应时间是绝对的。表示因为平均事务响应时间必须满足性能需求,可见的性能需求已经满足了用户的要求。
Luga Lee
2022/03/25
1.4K0
性能测试概念
性能测试是软件测试的一种类型,旨在评估系统、应用程序或服务在特定负载条件下的性能表现。
霍格沃兹测试开发Muller老师
2024/07/22
1730
48 张图 | 手摸手教你微服务的性能监控、压测和调优
打开批处理文件:\apache-jmeter-5.3\bin\jmeter.bat
悟空聊架构
2021/03/17
2.9K0
48 张图 | 手摸手教你微服务的性能监控、压测和调优
统计学里面的百分位数是什么意思
百分位数是一个统计学里面的概念,原来在review的elasticsearch中文文档聚合的章节里面遇到过,一直没搞明白什么意思,后来在jmeter里面又看到了这个术语,所以觉得有必要补充了解一下这个知识,下面的这个文章是网上不错的一篇文章比较通俗的通过例子解释了百分位数的含义,原文如下: jmeter里面90% Line 参数正确的含义: 虽然,我的上面理解有一定的道理,显然它是错误的。那看看JMeter 官网是怎么说的? 90% Line - 90% of the samples took no m
我是攻城师
2018/05/14
20.1K0
性能测试应该怎么做?
偶然间看到了阿里中间件Dubbo的性能测试报告,我觉得这份性能测试报告让人觉得做这性能测试的人根本不懂性能测试,我觉得这份报告会把大众带沟里去,所以,想写下这篇文章,做一点科普。
lyb-geek
2022/03/09
9191
性能测试应该怎么做?
jmeter分析性能报告时的误区
我们用jmeter做性能测试,必然需要学会分析测试报告。但是初学者常常因为对概念的不清晰,最后被测试报告带到沟里去。
飞天小子
2019/07/10
1.7K0
jmeter分析性能报告时的误区
服务质量保障之性能监控
伴随着突发流量、系统变更或代码腐化等因素,性能退化随时会发生。如在周年庆大促期间由于访问量暴涨导致请求超时无法下单;应用发布变更后,页面频繁卡顿导致客诉上升;线上系统运行一段时间后,突然发生OOM或连接打满拒绝访问。
测试开发技术
2024/03/11
2500
服务质量保障之性能监控
测试视角-什么是分位值?
互联网项目版本快速迭代要求技术层面的研发测试环节更快更高效,如何缩短研测周期是测试人员经常思考的问题。假如手里有一份10个测试项目的研测周期数据,数据统计了1个月内研发测试人员的工作效率。
测试工程师
2022/06/08
8540
测试视角-什么是分位值?
性能,10点系统性思考
作为一个半吊子全栈工匠,在20多年的职业生涯里遇到过太多关于软件性能的问题。论证或者证明性能的问题往往很关键,能否通过一次一个小而有逻辑的可证明可审核的步骤来解决性能问题呢?
半吊子全栈工匠
2020/03/12
4670
【高并发】面试官:性能优化有哪些衡量指标?需要注意什么?
作者个人研发的在高并发场景下,提供的简单、稳定、可扩展的延迟消息队列框架,具有精准的定时任务和延迟队列处理功能。自开源半年多以来,已成功为十几家中小型企业提供了精准定时调度方案,经受住了生产环境的考验。为使更多童鞋受益,现给出开源框架地址:
冰河
2020/10/29
5290
【高并发】面试官:性能优化有哪些衡量指标?需要注意什么?
Java性能优化学习1:理论基础学习与分析
性能:使用有限的资源在有限的时间内完成工作。 最主要的衡量因素就是时间,所以很多衡量指标,都可以把时间作为横轴。
程序员洲洲
2024/06/07
1130
《Prometheus监控实战》第1章 监控简介
第1章 监控简介 一个开源的监控系统,它从应用程序中实时获取时间序列数据,然后通过功能强大的规则引擎,帮助你识别监控环境所需的信息 ---- 1.1 什么是监控 监控将系统和应用程序生成的指标转换为对应的业务价值。你的监控系统会将这些指标转换为衡量用户体验的依据,该依据为业务提供反馈,以确保为客户提供了所需的产品。同时该依据还提供了对技术的反馈,指出哪些组件不起作用或者导致服务质量下降 监控系统有以下两个“客户” 技术 业务 1.1.1 技术作为客户 通过监控来了解技术环境状况,还可以帮助检测、诊断和解决技
yeedomliu
2019/12/19
1.4K0
压测和性能分析方法论
性能计数器,指的是服务器或者操作系统性能的一些指标数据,包括系统负载 System Load、对象和线程数、内存使用、CPU 使用、磁盘和网络 I/O 使用等指标。这些指标是系统监控的重要参数,反映系统负载和处理能力的一些关键指标,通常这些指标和性能是强相关的。这些指标很高,成为瓶颈,通常也预示着性能可能会出现问题。
Allen.Wu
2023/03/01
1.5K0
压测和性能分析方法论
SLA通俗理解
SLA 表征服务方与客户间的服务等级协议,定义服务方需保证的服务质量以及不达标情况下的服务补偿,在SRE领域,SLA 细分为 SLI、SLO 与 SLA:
欲休
2023/04/27
6K0
SLA通俗理解
指导思想:服务质量目标
书中的「服务质量」一词在原作中对应的是「Service Level」。一般情况下我们可以将其简单理解为「系统的性能」。
gopher云原生
2022/06/08
8600
指导思想:服务质量目标
相关推荐
监控系统的四个黄金指标
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档