我们正在定期处理消息。我们使用codahale dropwizard指标' "定时器"用于测量处理它们所需的时间。
我发现有人遇到同样的问题here: "指数衰减储层的问题是,如果没有新数据进入,它将一直保持给出相同的数字。例如,假设您用5和7更新计时器(然后根本不放任何东西),那么无论何时看到(即使在x小时后),计时器仍将显示平均值为6,这是不代表最后5分钟的任何方式。 所以,它只有在数据一直到达时才有效。"
但是没有任何建议可以解决它。他们说它不会被实施:https://github.com/dropwizard/metrics/issues/399
如何正确地重置这些计时器,或者我应该如何对其进行可视化,以免造成混淆?
答案 0 :(得分:8)
Note: It is too long for comment.
使用SlidingTimeWindowReservoir
将涵盖大多数用例。
但正如this comment中指出的那样,根据事件的数量可能存在问题:
它将窗口中的所有测量值保留在内存中,这在大量事件中变得不可接受
我们可以做得更好吗?我们继续搜索。如果幸运的话,我们会找到this blog post。它描述了你的问题。有一个简单的脏解决方案的链接。还建议使用HdrHistogram。
同样在metrics mailing list上有几条关于此问题的消息。
对于example并指向Marshall Pierce/hdrhistogram-metrics-reservoir。什么是HdrHistogram
以及为什么用它来衡量延迟来检查项目描述。
最后经过一些挖掘后你还可以找到vladimir-bukhtoyarov/metrics-core-hdr
项目。它也在使用HdrHistogram
。
因此,有两个类似的库使用相同的数据结构并声称可以解决您遇到的问题。