【问题标题】:How can I reset timer of dropwizard metrics?如何重置 dropwizard 指标的计时器?
【发布时间】:2017-04-09 23:28:00
【问题描述】:

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

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

正如您在深蓝色线中看到的那样:

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

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

【问题讨论】:

    标签: timer dropwizard metrics codahale-metrics


    【解决方案1】:
    Note: It is too long for comment.
    

    使用SlidingTimeWindowReservoir 将涵盖大部分用例。 但正如this comment 中指出的那样,根据事件的数量可能会出现问题: 它将所有测量值保存在内存中的窗口中,这在大量事件中变得不可接受

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

    metrics mailing list 上也有几条关于这个问题的消息。 对于example 并指向Marshall Pierce/hdrhistogram-metrics-reservoirHdrHistogram 是什么以及为什么使用它来测量延迟检查项目描述。

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

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

    【讨论】:

    • 你的回答比我的详细得多:)
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-17
      • 1970-01-01
      • 1970-01-01
      • 2017-11-08
      • 1970-01-01
      相关资源
      最近更新 更多