3

我们正在处理定期传入的消息。我们使用 codahale dropwizard 指标的“计时器”来测量处理它们所需的时间。

我发现有人在这里遇到同样的问题:“呈指数衰减的水库的问题是,如果没有新数据进入,它将一直提供相同的数字。例如,假设你用 5 和 7 更新计时器(然后根本不要放任何东西),那么无论你什么时候看到(即使在 x 小时之后),计时器仍然会显示平均值为 6,这无论如何都不代表最后 5 分钟。所以,它只有在数据一直在到达。”

正如您在深蓝色线中看到的那样: 在此处输入图像描述

但是没有解决它的建议。他们说它不会被实施:https ://github.com/dropwizard/metrics/issues/399

如何正确重置这些计时器,或者我应该如何将其可视化以免混淆?

4

2 回答 2

8
Note: It is too long for comment.

使用SlidingTimeWindowReservoir将涵盖大多数用例。但正如该评论中所指出的,可能存在取决于事件数量的问题:它将所有测量值保存在内存中的窗口中,这在大量事件中变得不可接受

我们能做得更好吗?让我们继续搜索。如果幸运的话,我们会找到这篇博文。它准确地描述了你的问题。他们的简单肮脏解决方案有一个链接。也是使用HdrHistogram的建议。

同样在指标邮件列表中,有几条关于这个问题的消息。例如并指向Marshall Pierce/hdrhistogram-metrics- reservoir。什么是以及为什么使用它来测量延迟检查项目描述。HdrHistogram

最后经过更多挖掘,您还可以找到vladimir-bukhtoyarov/metrics-core-hdr 项目。它HdrHistogram也在使用。

因此,有两个类似的库使用相同的数据结构并声称可以解决您遇到的问题。

于 2016-11-25T17:00:50.323 回答
0

每次需要重置时,您可以使用 com.codahale.metrics.MetricRegistry 的 public boolean remove(String name) 重新创建计时器(在此处将计时器名称作为参数传递)。删除后,您将创建一个具有相同名称的新计时器。它将有零计数器和其他指标。

于 2021-12-24T13:21:01.440 回答