小小这次又开始写作了,这次学习的内容是MyPerf4J相关的内容。

介绍

MyPerf4J是一个针对高并发,低延迟应用设计的高性能的无侵入的实时Java性能监控和统计的工具。

具有以下几个特性。
1. 无侵入
采用JavaAgent的方式,对应用程序完全无侵入,无需修改应用代码。
2. 高性能
性能消耗相当的小,每次记录只花费了73ms,完全可以在生产环境下长期使用。
3. 低内存
采用的是内存复用的方式,整个生命周期只产生了极少的临时对象,对应用程序的GC不造成干扰。
4. 高精度
这里采用纳秒级别来计算响应的时间。
5. 高实时
这里支持秒级监控,最低1s

文档

文档链接在这 https://github.com/LinShunKang/MyPerf4J/wiki/Chinese-Doc

使用方式

启动参数

这里添加启动参数,只需要添加相关的启动参数就行

-javaagent:/your/path/to/MyPerf4J-ASM.jar
-DMyPerf4JPropFile=/your/path/to/MyPerf4J.properties

在idea中配置如下

介绍 | MyPerf4J 入门指南插图

修改配置文件

在启动参数上,有MyPerf4J.properties相关的配置文件,这里直接使用相关的配置文件进行配置生成。

# 应用名称
AppName=demo

# MetricsProcessor类型,0:以标准格式化结构输出到stdout.log 1:以标准格式化结构输出到磁盘  2:以InfluxDB LineProtocol格式输出到磁盘
MetricsProcessorType=1

# 配置各个Metrics日志的文件路径,可不配置
MethodMetricsFile=C:/Users/v_pwlu/Desktop/myprofiler/MyPerf4J/MyPerf4J-ASM/target/method_metrics.log
ClassMetricsFile=C:/Users/v_pwlu/Desktop/myprofiler/MyPerf4J/MyPerf4J-ASM/target/class_metrics.log
GCMetricsFile=C:/Users/v_pwlu/Desktop/myprofiler/MyPerf4J/MyPerf4J-ASM/target/gc_metrics.log
MemMetricsFile=C:/Users/v_pwlu/Desktop/myprofiler/MyPerf4J/MyPerf4J-ASM/target/memory_metrics.log
BufPoolMetricsFile=C:/Users/v_pwlu/Desktop/myprofiler/MyPerf4J/MyPerf4J-ASM/target/buf_pool_metrics.log
ThreadMetricsFile=C:/Users/v_pwlu/Desktop/myprofiler/MyPerf4J/MyPerf4J-ASM/target/thread_metrics.log

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

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

# 需要监控的package,可配置多个,用英文';'分隔
#IncludePackages=your.package.to.monitor;cn.perf4j.demo;cn.perf4j.demo1.[p1,p2,p3];cn.*.demo.*
IncludePackages=com.example.demo

# 是否展示方法参数类型
ShowMethodParams=true

启动项目进行相关的测试

这里新建测试类,对项目进行相关的测试。

@Slf4j
@RestController
public class TestController {

    @GetMapping(value = "/api/test")
    public String test() {
        log.info("/api/test");
        testMoniter();
        return "test success";
    }

    private void testMoniter() {
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        log.info("test moniter");
    }
}

启动项目,查看文档

这里启动相关的项目,查看相关的文档

2019-05-22 16:20:25.014 [MyPerf4J] INFO Thanks sincerely for using MyPerf4J.
2019-05-22 16:20:25.068 [MyPerf4J] INFO profilingParamFile is empty, so use same profiling params to all methods.
2019-05-22 16:20:25.106 [MyPerf4J] INFO 
    __  ___      ____            ______ __      __
   /  |/  /_  __/ __ \___  _____/ __/ // /     / /
  / /|_/ / / / / /_/ / _ \/ ___/ /_/ // /___  / / 
 / /  / / /_/ / ____/  __/ /  / __/__  __/ /_/ /  
/_/  /_/\__, /_/    \___/_/  /_/    /_/  \____/   
       /____/                                     

2019-05-22 16:20:25.106 [MyPerf4J] INFO AbstractBootstrap doInitial() SUCCESS!!!

出现如上标志时,证明项目已经启动完成。

卸载

卸载的时候,直接添加以下两个参数,即可。

-javaagent:/your/path/to/MyPerf4J-ASM.jar
-DMyPerf4JPropFile=/your/path/to/myPerf4J.properties