Repolode
LinShunKang

LinShunKang/MyPerf4J

基于 JavaAgent 的高性能 Java 性能监控工具,无需修改应用代码即可采集方法与 JVM 指标。

Star
3,570
Fork
551
未关闭 Issue
6
最近提交
3个月前

这是什么?

MyPerf4J 是一款面向高并发、低延迟应用的 Java 性能监控与统计工具。它通过基于 ASM 字节码增强的 JavaAgent 接入 JVM,无需修改应用代码即可记录方法的响应时间。方法级指标包括 RPS、调用次数、平均值、最小值、最大值、标准差以及 TP50 到 TP100 等分位数,同时提供线程、内存、GC、类加载、JIT 编译和文件描述符等 JVM 指标。

统计粒度最低为 1 秒,且对每次调用进行全量统计而非采样。数据可输出到日志文件,也可通过配置写入 InfluxDB,并配合 Grafana 仪表盘展示。接入方式为配置一个 properties 文件并添加两个 JVM 启动参数;JDK 9 及以上版本需额外添加 --add-opens 参数。项目采用 BSD-3-Clause 许可证,也支持通过 Maven 自行构建。

核心功能

  • 01通过 JavaAgent 接入,无需修改应用代码
  • 02方法级指标包括 RPS、平均耗时、最大值及 TP50 至 TP100 分位数
  • 03JVM 指标覆盖线程、内存、GC、类加载、编译和文件描述符
  • 04统计粒度最低 1 秒,全量记录每次调用
  • 05结果输出到日志文件,支持对接 InfluxDB 与 Grafana

适用场景

  • 在生产负载下定位 Java 微服务中耗时较长的方法
  • 长期监控 JVM 内存、GC 与线程行为
  • 为 Java 服务搭建 Grafana 性能仪表盘

快速上手

  1. 1

    下载并解压 MyPerf4J-ASM.zip,然后修改 MyPerf4J.properties

  2. 2

    在 JVM 启动参数中添加 Java Agent 和配置文件路径

    java -javaagent:/path/to/MyPerf4J-ASM.jar -DMyPerf4JPropFile=/path/to/MyPerf4J.properties -jar yourApp.jar
  3. 3

    启动应用,并在 /path/to/log/method_metrics.log 中查看监控输出

使用前须知

  • 接入需要修改配置文件并设置 JVM 启动参数。
  • 在 JDK 9 及更高版本上,需要额外添加 --add-opens java.base/java.lang=ALL-UNNAMED 参数。

收录于专题

标签

常见问题

MyPerf4J 是什么?
基于 JavaAgent 的高性能 Java 性能监控工具,无需修改应用代码即可采集方法与 JVM 指标。 MyPerf4J 是一款面向高并发、低延迟应用的 Java 性能监控与统计工具。它通过基于 ASM 字节码增强的 JavaAgent 接入 JVM,无需修改应用代码即可记录方法的响应时间。方法级指标包括 RPS、调用次数、平均值、最小值、最大值、标准差以及 TP50 到 TP100 等分位数,同时提供线程、内存、GC、类加载、JIT 编译和文件描述符等 JVM 指标。
MyPerf4J 可以免费使用吗?用的什么许可证?
MyPerf4J 以 BSD-3-Clause 许可证开源。用于商业产品前,请先确认许可证条款。
MyPerf4J 还在维护吗?
半年内有更新。MyPerf4J 最近一次提交是在 2026年7月31日。
MyPerf4J 适合用来做什么?
在生产负载下定位 Java 微服务中耗时较长的方法 长期监控 JVM 内存、GC 与线程行为 为 Java 服务搭建 Grafana 性能仪表盘
MyPerf4J 怎么安装和运行?
下载并解压 MyPerf4J-ASM.zip,然后修改 MyPerf4J.properties 在 JVM 启动参数中添加 Java Agent 和配置文件路径: java -javaagent:/path/to/MyPerf4J-ASM.jar -DMyPerf4JPropFile=/path/to/MyPerf4J.properties -jar yourApp.jar 启动应用,并在 /path/to/log/method_metrics.log 中查看监控输出
在哪里获取 MyPerf4J?
源代码和安装说明在 GitHub 上:https://github.com/LinShunKang/MyPerf4J

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目

一个基于 JVM 的沙箱容器,可在不重启、不侵入目标应用的情况下进行运行期 AOP 增强。

DevOps 与云#java#jvm#aop
6953+2 本周1586JavaLGPL-3.0更新于 2个月前