您之所以会感到困惑,部分原因是DW Metrics Timer IS是DW Metrics Meter。

仪表专用于速率,单位为Hz(事件每秒)。 每个仪表都会发布4(?)个不同的指标:

自指标开始以来的平均(平均)率

1、5和15分钟的滚动平均费率

您可以通过在代码的不同点记录一个值来使用仪表-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.

我们期望速率为33.3 Hz,因为发生了333次操作,两次调用mark()之间的时间为10秒。

计时器计算以上四个指标(将每个Timer.Context视为一个事件),并向其中添加许多其他指标:

事件数量的计数

自指标开始以来的最小,平均和最大持续时间

标准偏差

一个“直方图”,记录在第50、97、98、99和99.95个百分位数上分配的持续时间

每个计时器总共报告15个指标。

简而言之:计时器报告很多指标,要理解它们可能很棘手,但是一旦您这样做,它们便是发现棘手行为的一种非常有效的方法。

事实是,仅收集两点之间花费的时间并不是一个非常有用的指标。 考虑:您有如下代码块:

Timer timer = registry.timer("costly-operation.service-time")

Timer.Context context = timer.time()

costlyOperation() //service time 10 ms

context.stop()

假设costlyOperation()具有不变的成本,不变的负载并且在单个线程上运行。 在1分钟的报告期内,我们应该预计此操作的时间为6000次。 显然,我们不会通过6000x线路报告实际的服务时间-而是需要某种方式来汇总所有这些操作,以适合我们所需的报告窗口。 DW Metrics的计时器每分钟(我们的报告期间)为我们自动执行一次。 5分钟后,我们的指标注册表将报告:

速率为100(每秒事件)

1分钟的平均速率为100

5分钟的平均速度为100

计数为30000(看到的事件总数)

最多10(ms)

最少10分钟

平均10

第50个百分点(p50)的值为10

99.9个百分点(p999)的值为10

现在,让我们考虑进入一个时期,有时我们的操作会长时间脱离轨道和障碍:

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()

在1分钟的收集时间内,由于每千次执行需要更长的时间,因此现在将看到少于6000次执行。 得出大约5505的信息。经过第一分钟(系统总时间为6分钟),我们现在将看到:

平均速率98(每秒事件)

1分钟平均率为91.75

5分钟平均率为98.35

计数为35505(看到的事件总数)

最长持续时间1000(ms)

最小持续时间为10

平均持续时间10.13

第50个百分点(p50)的值为10

99.9个百分点(p999)的值为1000

如果将其绘制成图形,您会看到大多数请求(p50,p75,p99等)在10毫秒内完成,但是每1000个请求(p99)中的一个请求在1秒内完成。 这也将被视为平均速度略有降低(约2%),平均1分钟的幅度显着降低(将近9%)。

如果仅查看超时时间平均值(速率或持续时间),您将永远不会发现这些尖峰-如果对许多成功操作进行平均,它们就会被拖入背景噪声中。 同样,仅知道最大值也无济于事,因为它不会告诉您最大值发生的频率。 这就是为什么直方图是跟踪性能的强大工具的原因,也是DW Metrics的计时器同时发布比率和直方图的原因。

java定时器克隆方式,Java-DropWizard指标计量器与计时器相关推荐

  1. java ascii 编码方式,Java 字符编码 ASCII、Unicode和UTF-8

    1 ASCII码 统一规定英语字符与二进制位之间的关系.ASCII码一共规定了128个字符的编码.例如,空格"SPACE"是32(二进制00100000),大写字母A是65(二进制 ...

  2. java控制台输出方式,JAVA控制台输出格式

    public class PrintFormat{ public static void main(String[] args) { //Console print format //System.o ...

  3. java 定时器框架_java定时器

    java定时器 什么是Java定时器? Java 定时器就是在给定的间隔时间执行自己的任务; Java实现定时器有以下几种: 通过Timer来实现定时任务 Timer 是来自 java.util.Ti ...

  4. java timertask 初始化_定时器实现方式之TimerTask、Timer

    在未来某个指定的时间点或者经过一段时间延迟后执行某个事件,这时候就需要用到定时器了.定时器的实现方式有很多种,今天总结最简单的实现方式.java 1.3引入了定时器框架,用于在定时器上下文中控制线程的 ...

  5. Java实现对象的克隆方式

    Java实现对象克隆的方法 1.Java实现克隆有两种形式 浅拷贝 深拷贝 在Java中吗,我们说两个对象是否相等通常有两层含义: 对象的内容是否相等,通常使用到对象的 equals(Object o ...

  6. java定时器实现的三种方式

    java定时器可以使用Thread线程实现,Timer,以及 1.Thread线程 需要用Thread创建线程,这里就不代码了 2.Timer public static void main(Stri ...

  7. java metrics_Spring Boot执行器:度量指标(Metrics)

    54. 度量指标(Metrics) Spring Boot执行器包含一个支持'gauge'和'counter'级别的度量指标服务,'gauge'记录一个单一值,'counter'记录一个增量(增加或减 ...

  8. java定时器返回future_java 定时器线程池(ScheduledThreadPoolExecutor)的实现

    前言 定时器线程池提供了定时执行任务的能力,即可以延迟执行,可以周期性执行.但定时器线程池也还是线程池,最底层实现还是ThreadPoolExecutor,可以参考我的另外一篇文章多线程–精通Thre ...

  9. Java的基础方法Java的对象_java基础之 创建对象的几种方式

    有4种显式地创建对象的方式: 1.用new语句创建对象,这是最常用的创建对象的方式. 2.运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor ...

最新文章

  1. php ids,PHP / MYSQL查询id“duplicate ids”
  2. WPF QuickStart系列之样式和模板(Style and Template)
  3. 服务提供者和服务消费者
  4. Oracle Unicode转中文(解码)
  5. string.length_C.中的String.Length属性示例
  6. iOS AutoLayout使用技巧
  7. html中contentEditable属性
  8. python 坐标轴刻度 格式_matplotlib命令与格式之tick坐标轴日期格式(设置日期主副刻度)...
  9. 8块钱搞定一个顶级域名 (全过程) B篇
  10. 从零开始搭二维激光SLAM --- 文章索引
  11. HDU1829 A Bug's Life 并查集
  12. DOSBox指令全 汇编指令大全 debug
  13. 作为产品经理为什么选择开源GIS
  14. 数值计算笔记之数值计算中应注意的问题
  15. MPU6050读取实验
  16. php计算qqbkn,QQ 加密算法最新版 _tk,bkn算法
  17. 80年代的Mac好用吗?
  18. xcode 软件˙∆集~
  19. linux系统程序问题报告,Linux程序设计实验报告.docx
  20. python制作收费_python分段计费demo

热门文章

  1. 洛谷 P5742、P5743、P5744 题解
  2. 【算法分析与设计】查找第K大/小元素问题
  3. Python适合大数据处理吗?
  4. HDU 4418 Time travel
  5. dairy-20110419-每日总结
  6. WEB超链分析算法纵览
  7. C/C++学习----第二章 继承和派生
  8. 软件工程:汇编语言和C语言在软件工程的应用,计算机学生必看!
  9. 程序员年薪高达40万,为什么有很多程序员单身?看看网友怎么说!
  10. 帆软助力惠科集团产值提升1%以上,带来上亿元数据价值