gpt4 book ai didi

java - 使用 DropWizard 计时器查找代码块的执行时间

转载 作者:行者123 更新时间:2023-12-02 15:20:39 24 4
gpt4 key购买 nike

我回答了这个问题DropWizard Metrics Meters vs Timers并理解了定时器的概念。但是有没有一种方法可以记录每次调用代码块时的执行时间?我不想要这个计时器的平均速率和内容,因为这个方法不会被频繁调用,但调用时会花费相当多的时间。那么有没有办法可以打印每次调用的执行时间呢?另外我如何获得以下问题的答案

  1. 如何调查值出现峰值的原因?
  2. 我如何知道最长时间事件何时发生,以便我可以查看日志并查看可能的原因?

任何帮助将不胜感激。

最佳答案

要报告准确的代码块执行时间,可以使用 Counter .

它可以保留累积时间值,可以通过求导将其转换为图表上的峰值。请参阅 Graphite 的 derivative(..)函数作为示例(请注意,这不是“真正的”导数,只是值差异)。

这种方法不适合频繁的事件,但可扩展性不太好。高负载情况下,Timers更适合。

简单的java助手:

    timed(String metricName, Runnable body) {
Counter counter = metricsRegistry.counter(metricName);
long t = System.currentTimeMillis();
try {
body.run();
finally {
counter.inc(System.currentTimeMillis() - t);
}
}

关于java - 使用 DropWizard 计时器查找代码块的执行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39169096/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com