You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Java Flight Recorder无法查看Spring Batch应用方法平均执行时间怎么办

问题原因及解决方案

1. 缺失JFR采集核心配置

你当前的启动命令未启用JFR采集功能,也没有配置对应事件的采集规则,这是无法看到方法耗时、Contention页无数据的核心原因,需要补充以下配置:

  • 启用JFR基础采集:在启动参数中加入-XX:StartFlightRecording=duration=0s,filename=recording.jfr,settings=profile,其中settings=profile是关键,默认的default配置采集粒度极粗,不会收集方法耗时、锁竞争等细粒度事件。
  • 调整方法采样精度:如果需要统计耗时更短的方法,可加入参数-XX:FlightRecorderOptions=methodsamplinginterval=1ms降低采样间隔,注意采样间隔越小对应用性能影响越高。
  • 开启锁竞争事件采集:Contention页仅展示锁竞争相关数据,要采集该类数据需在JFR启动参数中新增阈值配置:java-monitor-wait-threshold=1ms,java-monitor-inflate-threshold=1ms,park-threshold=1ms,默认20ms的阈值会过滤掉绝大多数短耗时的锁等待事件。

2. 完整优化后启动命令示例

java -Xms2048m -Xmx2048m -Ddivision=25 -Ddate= -Denv=dv -Dconn=45 -XX:StartFlightRecording=duration=0s,filename=batch_recording.jfr,settings=profile,java-monitor-wait-threshold=1ms,java-monitor-inflate-threshold=1ms,park-threshold=1ms -XX:FlightRecorderOptions=methodsamplinginterval=1ms -jar demo-jobs*.jar job-definition.xml jobName -next

3. 方法平均执行时间查看方式

方法平均执行时间不在Contention标签页展示,你需要切换到以下标签页查看:

  • Hot Methods:可查看所有方法的总采样耗时、调用占比,结合采样次数可计算出平均执行时间
  • Call Tree:可查看调用链上每个节点的累计耗时、自耗时,方便定位链路中的慢节点

如果需要精确的方法执行时长而非采样数据,可开启方法追踪事件(性能开销极大,仅建议测试环境使用),在JFR启动参数中新增method-profiling=enabled,method-profiling-threshold=1ms即可。

4. Contention页无数据的其他可能原因

若添加配置后Contention页仍然无数据,说明你当前运行的Spring Batch应用锁竞争极少,没有触发阈值以上的锁等待事件,属于正常情况。

内容的提问来源于stack exchange,提问作者One Developer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 01:36:03