metrics是开源的统计工具,其官网地址为:https://dropwizard.github.io/metrics/3.1.0/

使用时所需的jar包为:metrics-core-3.X.X.jar,例如:metrics-core-3.1.0.jar
在使用过程中,一般一个程序创建一个全局的MetricRegistry,由其对数据进行统计;数据统计的结果可用reporter输出,metrics支持多种类型的输出,例如使用ConsoleReporter 输出到控制台,使用Slf4jReporter将统计结果以self4j的日志方式输出(需要self4j的jar包)。
下面是其timer功能的使用方法:
功能介绍:metrics的timer功能可以统计一段代码的执行时间执行次数等
使用方法:
1.创建一个程序唯一的MetricRegistry对象
2.创建一个reporter对象来输出统计结果
3.打开reporter,让其处于数据输出的状态
4.为一段要监控的代码起一个标签名,在metrics内部将以该标签作为key来保存其统计数据;
5.为这个标签创建一个Timer.Context对象,并开始本次统计
6.调用Timer.Context对象的stop函数结束本次统计

5和6这两步算作一次统计,如果循环执行这两步就是循环统计这个标签所代表的代码

示例代码为:

MetricRegistry metrics = new MetricRegistry();Slf4jReporter reporter = Slf4jReporter.forRegistry(metrics).convertRatesTo(TimeUnit.SECONDS).convertDurationsTo(TimeUnit.MILLISECONDS).build();//metrics数据统计工具int icounter = 0;reporter.start(20, TimeUnit.SECONDS);long it = System.currentTimeMillis();boolean start = false;while(true){icounter++;long st = System.currentTimeMillis();if(st - it > 10000 && !start){start = true;System.out.println("stop metrics");reporter.stop();}System.out.println("counter = " + icounter);//开始统计timer1Timer.Context mTimer1 = metrics.timer("timer1").time();//--------标签timer1对应的mTimer1开始计时safeSleep(100);//开始统计timer2Timer.Context mTimer2 = metrics.timer("timer2").time();//--------标签timer2对应的mTimer2开始计时safeSleep(100);//结束统计timer1mTimer1.stop();//--------标签timer1对应的mTimer1计时结束//结束统计timer2mTimer2.stop();//--------标签timer2对应的mTimer1计时结束}

其输出的结果为:

10:43:19.478 [metrics-logger-reporter-1-thread-1] INFO  metrics - type=TIMER, name=timer1, count=494, min=19.090878, max=31.171142, mean=19.985073202643935, stddev=0.9713886624598259, median=19.858742, p75=19.909125, p95=20.520245, p98=21.869995, p99=24.629206999999997, p999=31.171142, mean_rate=49.43821863514075, m1=49.199999999999996, m5=49.199999999999996, m15=49.199999999999996, rate_unit=events/second, duration_unit=milliseconds
10:43:19.488 [metrics-logger-reporter-1-thread-1] INFO  metrics - type=TIMER, name=timer2, count=495, min=9.132584, max=21.298683, mean=10.124765811511601, stddev=0.7566357585679963, median=10.036045999999999, p75=10.081762999999999, p95=10.619485, p98=11.162185, p99=13.216044, p999=21.298683, mean_rate=49.541734551687156, m1=49.4, m5=49.4, m15=49.4, rate_unit=events/second, duration_unit=milliseconds
c

metrics的timer功能在java项目中的使用方法相关推荐

  1. java in thread main_linux运行java项目中的main方法,报错:Exception in thread main jav

    在windows环境运行正常的java netty项目部署到linux中调用main方法报错,修改过springmvc版本和jdk版本都没用,总是报 java.lang.ExceptionInInit ...

  2. contains方法 java_contains方法如何在Java项目中使用

    contains方法如何在Java项目中使用 发布时间:2020-11-30 15:24:20 来源:亿速云 阅读:88 作者:Leah contains方法如何在Java项目中使用?相信很多没有经验 ...

  3. java项目中多个定时器_在java项目中如何使用Timer定时器

    在java项目中如何使用Timer定时器 发布时间:2020-11-16 16:36:16 来源:亿速云 阅读:97 作者:Leah 在java项目中如何使用Timer定时器?很多新手对此不是很清楚, ...

  4. 关于Java项目中,word和Excel类型文件的预览功能实现

    关于Java项目中,word和Excel类型文件的预览功能实现 背景 Aspose说明 Aspose.Words Aspose.Cells pom依赖引入 引入license.xml(授权文件) 创建 ...

  5. Ant在Java项目中的使用(一眼就看会)

    参考:http://www.cnblogs.com/zhengqiang/p/5557155.html Ant是跨平台的构建工具,它可以实现项目的自动构建和部署等功能.在本文中,主要让读者熟悉怎样将A ...

  6. 为什么在2012/2013年我将在新的Enterprise Java项目中继续使用Spring *和* Java EE

    自从我担任技术决策职务以来已经过去了一年多,很高兴看到我仍然与之保持着完美的和谐. 几个月前,我在KaiWähner的一个不错的博客中写了一个有关JEE与Spring的答案. 如果观点没有不同,那么讨 ...

  7. 为什么我会在2012年的新企业Java项目中使用Java EE而不是Spring

    这个问题经常出现. 我的新项目也在2011年11月发布. 在这个新的Enterprise Java项目中,我将使用Java EE(JEE)代替Spring框架. 我知道:关于此主题的文章,博客和论坛讨 ...

  8. java读excel乱码,【java 项目中,上传的excel打开时无法正常打开,显示乱码 ,怎样可以正常打开,】java读取excel乱码...

    java 项目中,上传的excel打开时无法正常打开,显示乱码 ,怎样可以正常打开, 1.转换格就是将受损的Excel XP簿另存格式选为SYLK.如果可以打开受件,只是不能进行各种编辑和打印操作,那 ...

  9. 如何在Java项目中查找未使用/无效的代码

    本文翻译自:How to find unused/dead code in java projects What tools do you use to find unused/dead code i ...

最新文章

  1. 项目经理应该具备的技能
  2. mysql php 变量赋值,mysql变量赋值要注意的_MySQL
  3. NetworkOnMNetworkOnMainThreadException
  4. c语言程序做成可执行文件,windows环境下C程序生成可执行文件
  5. 通过 MySQL 二进制日志恢复删除的记录
  6. SAP物料主数据随笔
  7. 计算机程序员三级试题,计算机程序员考试试题及答案.
  8. 两种“新型”的javaweb后门(jspx和Java Logger)
  9. 销售管理软件系统的两大优势是什么?
  10. ap启动失败 ensp_eNSP模拟WLAN——上线华为真实AP的方法及配置
  11. 免费开源统计软件介绍——jamovi
  12. linux挂载40t硬盘,Centos支持40T磁盘阵列MD1200
  13. JavaScript中的动画效果
  14. JavaScript中函数的length属性
  15. Android 蓝牙 Bluetooth 自动回连 取消pin码校验弹出框
  16. Smiditor实现图片上传功能
  17. 第七届泰迪杯挑战赛C题
  18. 渐进式加载-基础讲解
  19. 逻辑综合重点解析55题(Design Compiler篇)
  20. Ubuntu 安装 conda

热门文章

  1. python输出今天时间_Python获取并输出当前日期时间
  2. 用友uclient客户端下载手机_影院6080手机版-影院6080手机客户端下载
  3. Spark SQL连接数据库找不到Mysql驱动解决方法
  4. jQuery的实现,去掉传入html代码两端的空格:
  5. logstash同步数据到es
  6. 求两个点的欧氏距离_数据智能系列(五)| 距离的秘密
  7. ping html 微信支付,说说PING++介入微信H5支付,我趟过的坑。
  8. 【快速入门Linux】3_Linux命令—终端命令格式、命令帮助信息、bash标准输入输出
  9. 95.91p30.space\/index.php,关于 ThinkPHP6 分页样式的定制及点击下一页搜索条件丢失的解决方法...
  10. activiti7 和业务_华电集团电子商务平台非招标业务操作指南