Apdex - 衡量用户满意度的指标

AI 摘要: 本文介绍了SLA和Apdex两个与IT应用程序性能相关的名词,并讨论了在网站监控过程中单一指标无法体现整体性能、基于平均值过粗以及应用程序不同需求问题。为了解决这些问题,引入了Apdex计算方式,以满意、容忍和不满意三个分类来衡量应用响应时间,并提供了如何分析当前应用系统的Apdex的实施方法。文章还介绍了New Relic监控工具及其对Apdex值的反馈。

1. 相关名词

SLA - Service Level Agreement是服务等级协议、服务水平协议,是云服务提供商与客户之间定义的正式承诺,是针对系统稳定性的一个评估(SLA 3个9,折合全年8个小时故障时长,4个9,折合全年52分钟,5个9折合全年5分钟)。

Apdex - Application Performance Index(应用程序性能指数)是用于测量计算中软件应用程序性能的开放标准,其目的是通过指定统一的方法来分析和报告测量的性能满足用户期望的程度,从而将测量结果转换为关于用户满意度的见解,它是由一个公司联盟开发和设计出来的。

MTTF(Mean Time To Failure):系统多久才触发故障

MTTR(Mean Time To Recovery):故障平均修复时间

2. 相关问题

在网站监控过程中,企业会收集许多信息技术(IT)应用程序性能的度量标准,比如服务器处理响应时长,单看每个性能指标可能无法体现系统整体的性能:

  • 单独看某个指标,没有在整体反应应用程序是否对客户做到满意或友好(指标没有综合起来)
  • 基于平均值,测量样本会清除分布中的重要细节(基于平均值,过粗)
  • 为响应时间值设置的目标(比如服务器处理时间在200ms响应)在不同的应用程序中是不一致的(有的请求客户可能可以容忍更高的处理响应时间,比如查看一个大的pdf文件)

业界期望将测量数据简化为单个易于理解的指标是跟踪和报告体验质量的理想方式,Apdex方法旨在解决这些问题。

3. Apdex 计算方式

3.1. 图示Apdex计算方式

Apdex分数是所有请求中可满足和可接受的请求数的百分比,每个满足的请求计数被计为一个请求,可接受的请求数被计为满意请求的一半。

Apdex分数基于所有请求中满意和可接受的请求的百分比。

3.2. 满意、容忍、不满意

Apdex 定义了应用响应时间的最优门槛为T,另外根据应用响应时间结合T定义了三种不同的性能表现(T由性能评估人员根据预期性能要求确定):

假定T=1.2秒:

满意度乘数区间响应耗时(T=1.2为例)
满意T或小于T<= 1.2秒
容忍,可接受> T,<= 4T1.2秒到4.8秒
不满意> 4T4.8秒或更长时间

3.3. Apdex实施 - 如何分析当前应用系统的Apdex?

假定阈值T=0.5秒(500毫秒)(该值是可选的,由用户选择)

  • 通过监控发现在两分钟内,服务器响应200个请求,其中:
    • 响应时间<=500毫秒的,有170个请求,因此它们被归类为令人满意的。
    • 响应时间>500毫秒,但小于2秒(4*500毫秒),有20个请求,因此它们被归类为可接受的。
    • 响应时间>2秒的,有10个请求,因此被归类为不满意,因为他们没有正确回应或花了超过2秒。
  • 结果,Apdex评分为0.9:(170 +(20/2))/ 200 = 0.9

优化项目的话,可以设定一个目标,在阈值T=0.5s情况下,在200个请求基准下,优化Apdex至0.95,可以:

  • 将满意提升至190,剩余10个随意,则Apdex超过0.95
  • 将满意提升至180,20个满意,0个不满意,则Apdex=0.95
  • 若满意仍为170,则可接受的至少需要达到(0.95x200)-170)x 2 = 40个,此处已不满足了(170+40 > 200)

有兴趣的,此处可以梳理出一个区间

3.4. 不满意度

如果一个服务的请求频次很低,即使他是不满的,对整体Apdex可能影响也不大,但反之如果服务的请求很高,则会导致Apdex逐步下降。

可以看到一个极限,在T设置为较大值时候,可接受的请求趋于0,几乎都是满意请求,则Apdex趋于1。

因此可以通过设置合理的阈值T,分析和调优系统,逐步提高Apdex的值,提升应用性能的用户满意度(对标行业 & 正确的设定目标)

4. APM监控 - New Relic

New Relic监控中有Apdex这个值的反馈,同时New Relic有说到Apdex的视频:

https://learn.newrelic.com/courses/intro_apm/understanding_apdex

5. 参考

  1. https://en.wikipedia.org/wiki/Apdex
  2. https://ruby-china.org/topics/27121
  3. https://newrelic.nissho-ele.co.jp/support/docs/apm/new-relic-apm/apdex/apdex-measuring-user-satisfaction