微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Micrometer 测量信号量等待时间

如何解决使用 Micrometer 测量信号量等待时间

我们有一个节流实现,基本上可以归结为:

Semaphore s = new Semaphore(1);
...
void callMethod() {
    s.acquire();
    timer.recordCallable(() -> // call expensive method);
    s.release();
}

我想收集有关信号量对方法整体响应时间的影响的指标。例如,我想知道等待获取的线程数、等待的时间等等,我想,我在寻找什么也能捕获时间信息的 guage?

我如何衡量 Sephore 统计数据?

解决方法

根据您的需要和情况,您可以执行多种操作。

LongTaskTimer 是一个计时器,用于测量当前正在进行的任务。进行中的部分是这里的关键,因为在任务完成后,您将看不到它对计时器的影响。这就是为什么它适用于长时间运行的任务,我不确定它是否适合您的用例。

您可以做的另一件事是使用 TimerGauge,其中计时器测量获取 Semaphore 所花费的时间,同时使用仪表,您可以递增/减少当前等待它的线程数。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。