Skip to content
High performance Java APM. Powered by ASM.
Branch: develop
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/ISSUE_TEMPLATE
MyPerf4J-ASM Core&Base: Support LogReserveCount property Mar 11, 2019
MyPerf4J-Base Base: Improve LogReserveCount judgment logic Mar 12, 2019
MyPerf4J-Core Core&Base: Support LogReserveCount property Mar 11, 2019
.coveralls.yml update .coveralls.yml Oct 19, 2018
.gitignore Core&ASM:针对MyPerf-ASM支持过滤私有方法、过滤指定方法;把配置信息解析后存入ProfilingConfig中;默认的Pe… May 13, 2018
.travis.yml UPDATE .travis.yml Oct 20, 2018
LICENSE Create LICENSE Mar 18, 2018
README.CN.md Update README Mar 3, 2019
README.EN.md Update README Mar 3, 2019
README.md Update README Mar 3, 2019
_config.yml Set theme jekyll-theme-cayman Dec 8, 2018
pom.xml Core&Base&ASM: Upgrade to 2.5.0 Mar 3, 2019

README.md

简体中文 | English

MyPerf4J

一个针对高并发、低延迟应用设计的高性能 Java 性能监控和统计工具。

GitHub (pre-)release Build Status Coverage Status GitHub issues GitHub closed issues GitHub

特性

  • 高性能: 单线程支持每秒 1000 万次 响应时间的记录,每次记录只花费 73 纳秒
  • 无侵入: 采用 JavaAgent 方式,对应用程序完全无侵入,无需修改应用代码
  • 低内存: 采用内存复用的方式,整个生命周期只产生极少的临时对象,不影响应用程序的 GC
  • 高精度: 采用纳秒来计算响应时间
  • 高实时: 支持秒级监控,最低 1 秒

使用场景

  • 开发环境中快速定位 Java 应用程序的性能瓶颈
  • 生产环境中长期监控 Java 应用程序的性能指标

文档

监控指标

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

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

快速启动

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

打包

  • git clone git@github.com:LinShunKang/MyPerf4J.git
  • mvn clean package
  • 把 MyPerf4J-ASM-${MyPerf4J-version}.jar 重命名为 MyPerf4J-ASM.jar

可以尝试直接下载 MyPerf4J-ASM.jar

配置

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

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

形如:java -javaagent:/your/path/to/MyPerf4J-ASM.jar -DMyPerf4JPropFile=/your/path/to/myPerf4J.properties -jar yourJar.jar

注意:使用 Windows 的同学,请注意修改路径格式,包括 MyPerf4JPropFile 中的文件路径

其中,MyPerf4JPropFile的配置如下:

#应用名称
AppName=MyPerf4JTest

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

#配置各个Metrics日志的文件路径,可不配置
MethodMetricsFile=/data/logs/MyPerf4J/method_metrics.log
ClassMetricsFile=/data/logs/MyPerf4J/class_metrics.log
GCMetricsFile=/data/logs/MyPerf4J/gc_metrics.log
MemMetricsFile=/data/logs/MyPerf4J/memory_metrics.log
BufPoolMetricsFile=/data/logs/MyPerf4J/buf_pool_metrics
ThreadMetricsFile=/data/logs/MyPerf4J/thread_metrics.log

#配置Record模式,可配置为accurate/rough
RecorderMode=accurate
   
#配置时间片,单位为ms,最小1s,最大600s
MilliTimeSlice=10000
   
#需要监控的package,可配置多个,用英文';'分隔
IncludePackages=cn.perf4j.demo;cn.perf4j.demo1.[p1,p2,p3];cn.*.demo.*

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

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

运行

  • 输出结果,输出到 /data/logs/MyPerf4J/method_metrics.log:

    MyPerf4J Method Metrics [2019-03-03 17:27:50, 2019-03-03 17:28:00]
    Method[5]                              Type      RPS  Avg(ms)  Min(ms)  Max(ms)   StdDev     Count     TP50     TP90     TP95     TP99    TP999   TP9999  TP99999    TP100
    DemoServiceImpl.getId1(long)        General    51317     0.00        0        1     0.00    513178        0        1        1        1        1        1        1        1
    DemoServiceImpl.getId2(long)        General   168637     0.00        0        4     0.00   1686377        0        1        2        3        4        4        4        4
    DemoServiceImplV2.getId1(long)      General      357     0.00        0        0     0.00      3570        0        0        0        0        0        0        0        0
    DemoServiceImplV2.getId3(long)      General      713     0.51        0        5     0.08      7138        0        1        2        3        4        5        5        5
    Dao.doQuery()                  DynamicProxy     1394     0.51        0        5     0.05     13944        0        1        2        3        4        5        5        5
    

卸载

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

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

问题

如果您有任何问题、疑问或者建议,请您毫不犹豫的 提交Issue 或者 发送邮件 : )

已知用户

如果您在使用 MyPerf4J,请告诉我,您的使用对我来说非常重要:https://github.com/LinShunKang/MyPerf4J/issues/30 (按登记顺序排列)

参考项目

MyPerf4J 是受以下项目启发而来:

更多信息

想更深入的了解 MyPerf4J?请看 https://github.com/LinShunKang/MyPerf4J/wiki/Chinese-Doc

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.