java 无侵入监控_MyPerf4J 一个高性能、无侵入的Java性能监控和统计工具

MyPerf4J

一个针对高并发、低延迟应用设计的高性能且无侵入的实时Java性能监控和统计工具。 受 perf4j 和 TProfiler启发而来。

MyPerf4J具有以下几个特性:

无侵入: 采用JavaAgent方式,对应用程序完全无侵入,无需修改应用代码

高性能: 性能消耗非常小,每次记录只花费73ns,可以在生产环境长期使用

低内存: 采用内存复用的方式,整个生命周期只产生极少的临时对象,不影响应用程序的GC

高精度: 采用纳秒来计算响应时间

高实时: 支持秒级监控,最低1s!

文档

监控指标

MyPerf4J为每个应用收集数十个监控指标,所有的监控指标都是实时采集和展现的。

下面是MyPerf4J目前支持的监控指标列表:

08c8fe03ac4059bd8008adcaba5b9bac.gif

19d0c021e8254648c06069de5916a40b.gif

fe7f759a5658fb193ad07b7165ced607.gif

21ca12ec2416a1c43dd85f9753f47798.gif

560fec0650ecbd93bf386b125bd3ce1b.gif

d98ed5922fd2728b7b80ebaf1db58134.gif

想知道如何实现上述效果?请先按照快速启动的描述启动应用,再按照这里的描述进行安装配置即可。

快速启动

MyPerf4J采用JavaAgent配置方式,透明化接入应用,对应用代码完全没有侵入。

打包

git clone git@github.com:ThinkpadNC5/MyPerf4J.git

mvn clean package

把 MyPerf4J-ASM-${MyPerf4J-version}.jar 重命名为 MyPerf4J-ASM.jar

配置

在JVM启动参数里加上以下两个参数

-javaagent:/your/path/to/MyPerf4J-ASM-${MyPerf4J-version}.jar

-DMyPerf4JPropFile=/your/path/to/myPerf4J.properties

其中,MyPerf4JPropFile的配置如下:

#应用名称

AppName=MyPerf4JTest

#配置MetricsProcessors,可不配置

#MethodMetricsProcessor=cn.myperf4j.ext.metric.processor.influxdb.InfluxDBMethodMetricsProcessor

#ClassMetricsProcessor=cn.myperf4j.ext.metric.processor.influxdb.InfluxDBJvmClassMetricsProcessor

#GCMetricsProcessor=cn.myperf4j.ext.metric.processor.influxdb.InfluxDBJvmGCMetricsProcessor

#MemMetricsProcessor=cn.myperf4j.ext.metric.processor.influxdb.InfluxDBJvmMemoryMetricsProcessor

#ThreadMetricsProcessor=cn.myperf4j.ext.metric.processor.influxdb.InfluxDBJvmThreadMetricsProcessor

#配置备份Recorders的数量,默认为1,最小为1,最大为8,当需要在较小MillTimeSlice内统计大量方法性能数据时可配置大一些

BackupRecordersCount=1

#配置Record模式,可配置为accurate/rough

RecorderMode=accurate

#配置时间片,单位为ms,最小1s,最大600s

MillTimeSlice=10000

#需要监控的package,可配置多个,用英文';'分隔

IncludePackages=cn.perf4j.demo

#不需要监控的package,可配置多个,用英文';'分隔

ExcludePackages=org.spring;

#可配置多个方法名,用英文';'分隔

ExcludeMethods=equals;hash

#是否排除私有方法,true/false

ExcludePrivateMethod=true

#通用的方法执行时间阈值,单位为ms

ProfilingTimeThreshold=1000

#在一个时间片内,超过方法执行时间阈值的次数,仅在RecorderMode=accurate时有效

ProfilingOutThresholdCount=10

想了解更多的配置?请看这里

运行

输出结果,默认输出到stdout.log: MyPerf4J Performance Statistics [2018-07-01 23:40:23, 2018-07-01 23:40:24]

Api[2/3] RPS Avg(ms) Min(ms) Max(ms) StdDev Count TP50 TP90 TP95 TP99 TP999 TP9999 TP99999 TP100

DemoServiceImpl.getId1 7454181 0.00 0 0 0.00 7454181 0 0 0 0 0 0 0 0

DemoServiceImpl.getId2 7454180 0.00 0 0 0.00 7454180 0 0 0 0 0 0 0 0

卸载

在JVM启动参数中去掉以下两个参数,重启即可卸载此工具。

-javaagent:/your/path/to/MyPerf4J-ASM.jar

-DMyPerf4JPropFile=/your/path/to/myPerf4J.properties

问题

如果您遇到任何问题或有疑问,请您毫不犹豫的提交Issue : )

更多信息

PS: 如果觉得写得还行,请**star**这个项目,让更多人了解和使用MyPerf4J :) 。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/395708.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

javascript 减少回流

减少回流(REFLOWS) 当浏览器重新渲染文档中的元素时需要 重新计算它们的位置和几何形状,我们称之为回流。回流会阻塞用户在浏览器中的操作,因此理解提升回流时间是非常有帮助的。 回流时间图表 你应该批量地触发回流或重绘&#x…

转: 关于 ssl的建立链接的过程

转自: http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html SSL/TLS协议运行机制的概述 作者: 阮一峰 日期: 2014年2月 5日 互联网的通信安全,建立在SSL/TLS协议之上。 本文简要介绍SSL/TLS协议的运行机制。文章的重点是设计思…

PHP 文件加密Zend Guard Loader 学习和使用(如何安装ioncube扩展对PHP代码加密)

一、大体流程图 二、PHP 项目文件加密 下表列出了Zend产品中的PHP版本及其内部API版本和Zend产品版本。 如何加密请往后看 三、如何使用 第一步:确认当前环境 Amai Phalcon 前,请确认您具备以下两个条件,如果您的环境不满足此条件&#xff0c…

php寻找文本,PHP文本数据库的搜索方法_php

//php文本数据库的搜索方法searchstr("/".preg_quote($searchstr)."/");//$searchstr是查找的关键字$recordsfile($file);//获取所有的记录数http://www.gaodaima.com/45906.htmlPHP文本数据库的搜索方法_php//$file是查找的数据文件$search_reocrdspreg_g…

bzoj 2178 圆的面积并 —— 辛普森积分

题目:https://www.lydsy.com/JudgeOnline/problem.php?id2178 先看到这篇博客:https://www.cnblogs.com/heisenberg-/p/6740654.html 好像本应算弓形面积、三角形面积之类的,但不会...于是用辛普森积分硬做... 参考了这篇博客:ht…

Charles抓包工具的使用

2019独角兽企业重金招聘Python工程师标准>>> 感谢唐巧分享的文章,受益匪浅 文章目录 1. 目录及更新说明2. Charles 限时优惠3. 简介4. 安装 Charles5. 将 Charles 设置成系统代理6. Charles 主界面介绍7. 过滤网络请求8. 截取 iPhone 上的网络封包 8.1. …

iOS开发——处理1000张图片的内存优化

一、项目需求 在实际项目中,用户在上传图片时,有时会一次性上传大量的图片。在上传图片前,我们要进行一系列操作,比如:旋转图片为正确方向,压缩图片等,这些操作需要将图片加载到内存中&#xff…

jquery ui php,php – 打开带有动态内容的jQuery UI对话框

我有一个关于jQuery UI对话框的问题,并显示数据库中的动态内容.所以我得到了一个web应用程序,我还需要创建一个管理模块来管理所有用户和其他信息.我创建了一个页面,显示列表中的所有用户,在每一行中我也创建了一个编辑按钮.我想这样做,当你按下用户的编辑按钮时,会打开一个对话…

MapReduce Input Split 输入分/切片

MapReduce Input Split(输入分/切片)详解 public static long getMaxSplitSize(JobContext context) { return context.getConfiguration().getLong(SPLIT_MAXSIZE, Long.MAX_VALUE); } 如果没有设置这maxsize默认是Long.MAX_VALUE public static long …

WPF自定义空心文字

WPF自定义空心文字 原文:WPF自定义空心文字首先创建一个自定义控件,继承自FrameworkElement,“Generic.xaml”中可以不添加样式。 要自定义空心文字,要用到绘制格式化文本FormattedText类。FormattedText对象提供的文本格式设置功能比WPF提供…

【转】UITableView详解(UITableViewCell

原文网址:http://www.kancloud.cn/digest/ios-1/107420 上一节中,我们定义的cell比较单一,只是单调的输入文本和插入图片,但是在实际开发中,有的cell上面有按钮,有的cell上面有滑动控件,有的cell上面有开关选项等等,具体参加下面2个图的对比: 我们可以通过…

时间模块和时间工具

一、time模块 三种格式 时间戳时间:浮点数 单位为秒 时间戳起始时间: 1970.1.1 0:0:0 英国伦敦时间 1970.1.1 8:0:0 我国(东8区) 结构化时间:元组(struct_time) 格式化时间:str数据类型的 1、常用方法 import timetime.sleep(secs…

php splqueue 5.5安装,解析PHP标准库SPL数据结构

SPL提供了双向链表、堆栈、队列、堆、降序堆、升序堆、优先级队列、定长数组、对象容器SplQueue 队列类进出异端&#xff0c;先进先出<?php $obj new SplQueue();//插入一个节点到top位置$obj->enqueue(1);$obj->enqueue(2);$obj->enqueue(3);/**SplQueue Object…

初识virtual memory

一、先谈几个重要的东西 virtual memory是一个抽象概念&#xff0c;书上的原文是"an abstraction of main memory known as virtual memory"&#xff08;参考资料p776&#xff09;。那么什么是抽象概念。下面说说我个人对这个东西的理解。 所谓抽象概念是指抽象出来的…

java闰年的年份,Java案例-判断给定年份是闰年

专注学子高考志愿填报&#xff0c;分享你所不知道信息。Java案例-判断给定年份是闰年案例描述编写程序&#xff0c;判断给定的某个年份是否是闰年。闰年的判断规则如下&#xff1a;(1)若某个年份能被4整除但不能被100整除&#xff0c;则是闰年。(2)若某个年份能被400整除&#…

通过path绘制点击区域

通过path绘制点击区域 效果 源码 https://github.com/YouXianMing/Animations // // TapDrawImageView.h // TapDrawImageView // // Created by YouXianMing on 16/5/9. // Copyright © 2016年 YouXianMing. All rights reserved. //#import <UIKit/UIKit.h> #…

Raft与MongoDB复制集协议比较

在一文搞懂raft算法一文中&#xff0c;从raft论文出发&#xff0c;详细介绍了raft的工作流程以及对特殊情况的处理。但算法、协议这种偏抽象的东西&#xff0c;仅仅看论文还是比较难以掌握的&#xff0c;需要看看在工业界的具体实现。本文关注MongoDB是如何在复制集中使用raft协…

推荐两款实用工具——hcache和SQLPad

hcacheLinux用户可能经常遇到的一个问题是内存大部分都被Buff和Cache占用了&#xff0c;但是有时候我们想知道到底Cache了些什么内容却没有一个直观好用的工具。今天给你介绍一个可以查看Linux当前缓存了哪些文件的小工具hcache。hcache是基于pcstat的&#xff0c;pcstat可以查…

jmeter学习笔记(一)

1.添加JSON Path Extractor >>下载地址&#xff1a;http://jmeter-plugins.org/downloads/all/&#xff0c;下载 JMeterPlugins-ExtrasLibs-X.X.X.zip下载 >>解压&#xff0c;将lib和lib/ext中的jar包放到安装目录对应位置&#xff0c;重启。 2.参数不能输入中文&…

【公众号系列】SAP S/4 HANA的移动平均价

公众号&#xff1a;SAP Technical本文作者&#xff1a;matinal原文出处&#xff1a;http://www.cnblogs.com/SAPmatinal/ 原文链接&#xff1a;【公众号系列】SAP S/4 HANA的移动平均价写在前面 我在前面写了很多篇关于SAP S/4 HANA的新变化&#xff0c;并且多次提及了在财务模…