如何以低成本使用Java Flight Recorder (JFR) 捕获生产环境实时性能数据?

2026-05-07 20:490阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1053个文字,预计阅读时间需要5分钟。

如何以低成本使用Java Flight Recorder (JFR) 捕获生产环境实时性能数据?

JFR系统在生产环境中能够长期稳定运行,关键不在于能不能开得起,而是怎么开才不扰民。默认配置下,性能损耗不明显,interval=1ms和interval=10ms的差异,就体现了服务稳定性的分水岭。

用 jcmd 动态启停,别碰重启

生产环境最怕改 JVM 参数后 reload 或重启。JFR 支持运行时控制,完全绕过这个雷区:

  • jps -l 找出目标进程 ID(比如 12345
  • 启动录制:jcmd 12345 JFR.start name=prod-6h,settings=profile,filename=/var/log/jfr/prod-$(date +%s).jfr,maxage=6h,maxsize=200M
  • 临时 dump 当前缓冲数据(不停止录制):jcmd 12345 JFR.dump name=prod-6h filename=/var/log/jfr/dump-$(date +%s).jfr
  • 问题复现后停止:jcmd 12345 JFR.stop name=prod-6h

注意:settings=profile 是生产推荐配置,它禁用低频高开销事件(如类加载细节),只保留 CPU、GC、线程、锁、IO 等核心指标;而 settings=default 会记录更多内容,开销可能升至 3%–5%,慎用。

阅读全文
标签:Java

本文共计1053个文字,预计阅读时间需要5分钟。

如何以低成本使用Java Flight Recorder (JFR) 捕获生产环境实时性能数据?

JFR系统在生产环境中能够长期稳定运行,关键不在于能不能开得起,而是怎么开才不扰民。默认配置下,性能损耗不明显,interval=1ms和interval=10ms的差异,就体现了服务稳定性的分水岭。

用 jcmd 动态启停,别碰重启

生产环境最怕改 JVM 参数后 reload 或重启。JFR 支持运行时控制,完全绕过这个雷区:

  • jps -l 找出目标进程 ID(比如 12345
  • 启动录制:jcmd 12345 JFR.start name=prod-6h,settings=profile,filename=/var/log/jfr/prod-$(date +%s).jfr,maxage=6h,maxsize=200M
  • 临时 dump 当前缓冲数据(不停止录制):jcmd 12345 JFR.dump name=prod-6h filename=/var/log/jfr/dump-$(date +%s).jfr
  • 问题复现后停止:jcmd 12345 JFR.stop name=prod-6h

注意:settings=profile 是生产推荐配置,它禁用低频高开销事件(如类加载细节),只保留 CPU、GC、线程、锁、IO 等核心指标;而 settings=default 会记录更多内容,开销可能升至 3%–5%,慎用。

阅读全文
标签:Java