micrometer - 用千分尺测量信号量等待时间
问题描述
我们有一个节流实现,基本上可以归结为:
Semaphore s = new Semaphore(1);
...
void callMethod() {
s.acquire();
timer.recordCallable(() -> // call expensive method);
s.release();
}
我想收集有关信号量对方法的整体响应时间的影响的指标。例如,我想知道等待获取的线程数、等待所花费的时间等,我想,我在寻找什么也可以捕获时间信息的量规?
如何测量 Semphore 统计数据?
解决方案
根据您的需求和情况,您可以做多种事情。
LongTaskTimer
是一个计时器,用于测量当前正在进行的任务。进行中的部分是这里的关键,因为在任务完成后,您将看不到它对计时器的影响。这就是为什么它适用于长时间运行的任务,我不确定它是否适合您的用例。
您可以做的另一件事是使用 aTimer
和 a Gauge
,其中计时器使用仪表测量获取Semaphore
while 所需的时间,您可以增加/减少当前正在等待它的线程数。
推荐阅读
- r - 循环抓取的数据以将数据存储在 R 中的数据框中
- python - live.js 与 python SimpleHTTPServer
- swagger - 如何显示
在 Swagger 文档中 - python - html_read:只读数据,而不是表格的形状 [A 行 x B 列] (Python)
- javascript - 如何从输入的列表中删除重复项?(Javascript)
- r - 如何确定R中图像的某种颜色的比例?
- xcode - 如何在 Xamarin 中修复 dsymutil
- php - 在一页中按不同类别显示帖子 - Wordpress 开发
- c# - 设置小窗体宽度产生意外结果
- python-3.x - 自定义类中的属性未按预期更新