【发布时间】:2015-01-27 14:14:31
【问题描述】:
我正在尝试分析系统中的延迟分布。通过以下方式收集延迟:然后测量每分钟观察到的最大延迟,如果此延迟是今天看到的最大延迟,则记录此值。在一天结束时,我有这样的事情:
[12, 15, 19, ..., 57, 120]
这是一天中以毫秒为单位的 API 调用时间。我需要从这些数据中构建一些有用的指标,但我不知道如何!显然,如果我从这个数据集中计算平均值或中位数是没有意义的。它不会代表真正的中值或平均值,因为如果最大延迟发生在一天的第一分钟 - 它既是中值也是平均值。我不能依赖最大值,因为这可能是由网络延迟等罕见事件引起的异常值。这个异常值不代表代码质量,也无助于捕捉真正的错误。
您能帮我从这些数据中建立有意义的指标吗?
【问题讨论】:
-
您是否试图获得一些排除异常值的平均值?
-
没错。我需要异常值,但这很简单。
-
听起来你需要某种moving average。您也许可以从这样的平均值中排除固定数量的异常值。
-
我需要从这个数字列表中生成单个测量值。这是一天的延迟数字,我计划在更大的时间范围内汇总这些测量值并进行分析。是的,可以使用移动平均线,但首先我需要从这个数字列表中建立一些指标。
-
可能有可能设计一种方法来从您可用的运行最大值推断特定分布的参数。那么你唯一报告的数字可能是(比如说)估计分布的第 95 个或第 99 个百分位数。我不知道这是否是一个已解决的问题;您可以通过在 stats.stackexchange.com 上询问来找到答案。这听起来确实是一个有趣的问题,但有点太糟糕了,因为我确定你不想要一个有趣的问题。
标签: performance statistics monitoring latency