sme*_*eeb 65 java metrics timer dropwizard codahale-metrics
我学习的DropWizard指标库(原科达硬朗指标),我很困惑,当我应该使用到MetersVS Timers.根据文件:
仪表:仪表测量一组事件发生的速率
和:
计时器:计时器基本上是事件类型持续时间的直方图和其发生率的计量表
基于这些定义,我无法辨别它们之间的区别.令我感到困惑的是,Timer没有像我期望的那样使用它.对我而言,Timer就是这样:一个计时器; 它应该测量a start()和之间的时间差stop().但似乎Timers也可以捕捉事件发生的速度,感觉就像是踩到了Meters脚趾.
如果我能看到每个组件输出的示例,这可能有助于我理解何时/何处使用其中任何一个.
Mat*_*ler 140
你之所以感到困惑,是因为DW Metrics Timer 是一款DW Metrics Meter.
仪表专门关注速率,以Hz(每秒事件数)为单位.每个Meter会导致发布4个(?)不同的指标:
您可以通过在代码中的不同点记录值来使用仪表 - DW Metrics会自动记录每次调用的挂起时间以及您给出的值,并使用这些来计算该值增加的速率:
Meter getRequests = registry.meter("some-operation.operations")
getRequests.mark() //resets the value, e.g. sets it to 0
int numberOfOps = doSomeNumberOfOperations() //takes 10 seconds, returns 333
getRequests.mark(numberOfOps) //sets the value to number of ops.
Run Code Online (Sandbox Code Playgroud)
我们希望我们的速率为33.3 Hz,因为333次操作发生,两次调用mark()之间的时间是10秒.
计时器计算以上4个指标(将每个Timer.Context视为一个事件)并向其添加许多其他指标:
每个计时器报告的总指标有15个.
简而言之:计时器报告了很多指标,它们可能很难理解,但一旦你这样做,它们就是发现spikey行为的一种非常有效的方法.
事实上,只收集两点之间的时间并不是一个非常有用的指标.考虑一下:你有一个像这样的代码块:
Timer timer = registry.timer("costly-operation.service-time")
Timer.Context context = timer.time()
costlyOperation() //service time 10 ms
context.stop()
Run Code Online (Sandbox Code Playgroud)
让我们假设expensiveOperation()具有恒定的成本,恒定的负载并在单个线程上运行.在1分钟的报告期内,我们应该期望这次操作6000次.显然,我们不会通过电线6000x报告实际的服务时间 - 相反,我们需要一些方法来总结所有这些操作以适应我们所需的报告窗口.DW Metrics'Timer为我们自动执行此操作,每分钟一次(我们的报告期).5分钟后,我们的指标注册表将报告:
现在,让我们考虑进入一个时期,我们的操作偶尔会完全脱离轨道并长时间阻塞:
Timer timer = registry.timer("costly-operation.service-time")
Timer.Context context = timer.time()
costlyOperation() //takes 10 ms usually, but once every 1000 times spikes to 1000 ms
context.stop()
Run Code Online (Sandbox Code Playgroud)
在1分钟的收集期内,我们现在看到的执行次数少于6000次,因为每1000次执行需要更长的时间.工作到大约5505.在第一分钟(总系统时间为6分钟)后,我们现在看到:
如果你把它绘制成图形,你会发现大多数请求(p50,p75,p99等)在10毫秒内完成,但是1000(p99)中的一个请求在1秒内完成.这也可以看作平均率略有下降(约2%),1分钟均值(近9%)大幅减少.
如果你只看时间的意思(速率或持续时间),你永远不会发现这些尖峰 - 当平均很多成功的操作时,它们会被拖入背景噪音中.同样,只知道最大值没有用,因为它不会告诉你最大值出现的频率.这就是为什么直方图是跟踪性能的强大工具,以及为什么DW Metrics的Timer发布速率和直方图.
| 归档时间: |
|
| 查看次数: |
29738 次 |
| 最近记录: |