com.codahale.metrics.Timer用于使用CompleteableFuture计时方法执行

时间:2019-06-26 11:30:35

标签: java time prometheus completable-future codahale-metrics

我们正在使用com.codahale.metrics.Timer来确定完成completeableFuture方法所花费的时间。

我们有以下代码:

import com.codahale.metrics.Timer;
import com.codahale.metrics.MetricRegistry;
...

Timer timer = MetricsRegistry.timer("older-Cat-latency");
Timer.Context context = timer.time();
DeferredResult<OlderCat> deferredResult = new DeferredResult<>();

catService.getOlderCat(catName)
            .handle((result, err) -> {
                if(err != null){
                    deferredResult.setErrorResult(new OlderCat(...));
                    return null;
                }
                context.stop();  <----  // here we stop the timer
                deferredResult.setResult(result);
                return null;
            });

return deferredResult;

从理论上讲,此代码应该可以,但是在Prometheus中检查时间时,我们看到非常低的时序延迟似乎与我们得到的实际结果不符(例如,测量了15毫秒)相对于实际的2秒,我们用“手动”测量)

因此,似乎有两个选择:

  • 上面的代码未正确计时
  • 代码的时间安排正确,但是Grafana中的图表在某种程度上具有误导性。

您知道时间码是否正确吗?

0 个答案:

没有答案