如何根据 SLA 得出 Apdex 阈值?

How arrive at an Apdex Threshold value based on the SLA?

我们有可用的 REST API。对于此 API 提供的每个端点,我们都有一个基于内部测试的定义 SLA。 New Relic 提供了一个选项来定义每个应用程序的 Apdex T 分数。考虑如下场景:

那么,在这种情况下,我们如何得出 Apdex 阈值? 我浏览了来自 New relic 的以下文章:LINK。当我们将服务视为一个整体时,这是有意义的,但当我们查看每个端点时,则不然。

您确定要根据您的 SLA 设置 Apdex 吗?

我建议应用程序的典型性能是更好的衡量标准。假设您的应用程序在过去 7 天内的性能是否平均。但是在 "How to set an Apdex T" 中,文章建议对您的典型表现使用百分位数。

因此,如果您获得第 90 个百分位数,则 Apdex 分数通常应该接近 0.95。显然 Apdex 为 1 是无用的,因为您没有将您的帐户持有到足够接近的帐户。所以我会单独询问 Insights

select percentile(duration, 90) from Transaction where appName="AppA" since 7 days ago

select percentile(duration, 90) from Transaction where appName="AppB" since 7 days ago

这将使您的响应时间超过 90% 的客户。所以应该是关于您的 Apdex T 值的一个很好的粗略指南。

但是,如果您的目标是在 SLA 为 200 毫秒的 App A 上,任何超过该时间的交易都应为 Apdex 分数的 0 分。那么很简单,您的 Apdex T 应该是 50 毫秒。因为任何快于 50 毫秒的东西都会得到 1 分,任何介于 Apdex T 和 4 x Apdex T 之间的东西都会得到 0.5 分,但至少仍在得分。任何慢于 4 x Apdex T(在这种情况下为 200 毫秒)的东西都会在 Apdex 中获得 0 分。这样一来,如果交易违反了 SLA,那么交易就会被标记为 Frustrated for Apdex。

Apdex 是一门艺术,但您绝对可以使用上述任何一种方法到达您需要的地方。我希望我涵盖了我认为在这种情况下可能出现的两种情况。