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

简介: 【8月更文挑战第10天】(翻译)性能监控之百分位数监控

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

一、前言

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

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

二、平均值如何造成误导

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

三、百分位数说明

当您想从高级角度了解应用程序的执行情况时,理解百分位数的概念是很有用的。百分位是统计中使用的一种度量,表示一组观察中某一特定百分比的观察值低于该值。例如,低于 90 %响应时间值的 HTTP 请求的响应时间称为 9 0百分位响应时间。下面的截图是 3.0 秒(所以 90 %的请求都是在 3.0 秒或更短的时间内处理的:
image.png
要获得某个单击操作的 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月月度概述的百分位数图表(右下角):
image.png

图中用蓝色表示平均响应时间,用黑色、灰色和浅灰色绘制第 50、90 和 95 百分位数:
image.png
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 协议指标、在层中花费的时间等,但现在还可以将其与百分比进行比较:
image.png
x 轴为 2018 年 6 月的天数,y 轴为活动会话数和最终用户数:
image.png
我们可以看到以下模式:

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

六、趋势分析

我们可以在各种绩效评估中使用百分位数。特别是对于新版本发布后的回归和趋势分析。我们真的提高了性能吗?有时在新版本发布后性能会上升或下降——如果我们能够看到并认识到这一点将会很有用。如果是的话,第 50、90 和 95 百分位线应该在您提高生产性能后减少——这意味着更快的响应时间:
image.png
如图所示。6月17日发布了一个新的版本,据说性能有所改善。在那之后,在6月剩下的几天里,我们看到平均响应时间,第 50、90 和 95 百分位数下降了——这表明新版本确实提高了性能。

七、周、日、小时概述

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

八、结论

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

目录
相关文章
|
Prometheus 监控 Cloud Native
【云原生】Docker容器命令监控+Prometheus监控平台
【云原生】Docker容器命令监控+Prometheus监控平台
538 0
【云原生】Docker容器命令监控+Prometheus监控平台
|
3月前
|
Kubernetes 监控 Cloud Native
"解锁K8s新姿势!Cobra+Client-go强强联手,打造你的专属K8s监控神器,让资源优化与性能监控尽在掌握!"
【8月更文挑战第14天】在云原生领域,Kubernetes以出色的扩展性和定制化能力引领潮流。面对独特需求,自定义插件成为必要。本文通过Cobra与Client-go两大利器,打造一款监测特定标签Pods资源使用的K8s插件。Cobra简化CLI开发,Client-go则负责与K8s API交互。从初始化项目到实现查询逻辑,一步步引导你构建个性化工具,开启K8s集群智能化管理之旅。
53 2
|
5月前
|
监控 Java 数据安全/隐私保护
性能监控之 JMX 监控 Docker 容器中的 Java 应用
【6月更文挑战9天】性能监控之 JMX 监控 Docker 容器中的 Java 应用
642 1
|
6月前
|
Prometheus 监控 Cloud Native
Prometheus监控平台配置--监控集群资源信息
在scrape_configs 配置项下添加Linux 监控的job,其中 IP 修改为上面部署node_exporter机器的ip,端口号为9100,需要注意缩进。
247 6
|
Prometheus 监控 Cloud Native
Prometheus监控Spring Boot应用,自定义应用监控指标
Prometheus监控Spring Boot应用,自定义应用监控指标
261 0
Prometheus监控Spring Boot应用,自定义应用监控指标
|
监控 关系型数据库 调度
盘点5个.Net开发的服务器进程监控、性能监控、任务调度的开源项目
盘点5个.Net开发的服务器进程监控、性能监控、任务调度的开源项目
274 0
|
监控 Linux
linux性能监控:内存监控命令之free命令
linux性能监控:内存监控命令之free命令
239 1
linux性能监控:内存监控命令之free命令
|
监控 Linux
linux性能监控:CPU监控命令之nmon命令
linux性能监控:CPU监控命令之nmon命令
998 1
linux性能监控:CPU监控命令之nmon命令
|
缓存 监控 算法
linux性能监控:CPU监控命令之top命令
linux性能监控:CPU监控命令之top命令
595 1
linux性能监控:CPU监控命令之top命令
|
存储 监控 Shell
Linux 性能监控之CPU&内存&I/O监控Shell脚本2
Linux 性能监控之CPU&内存&I/O监控Shell脚本2
515 0