是否可以自动化 Java 任务控制以每小时将 1 分钟的飞行记录转储到文件夹中?
例如:服务器正在 24/7 运行应用程序,我希望 .jfr 文件每小时自动转储到文件中
有一个 cronjob ,jcmd JFR.dump
至少对于 JDK 11 它有开始/结束参数。
$ java -XX:StartFlightRecording MyApp
然后创建一个转储脚本,例如
jcmd MyApp JFR.dump filename=/dumps begin=-1m
然后添加一个cronjob
$ crontab -e.
带有脚本条目:
*/60 * * * * /scripts/dumpjfr.sh
对于旧版本,如果您想控制转储量,您可能必须使用 FlightRecorder MXBean,或者使用 -XX:StartFlightRecording=maxage=1m 将录制的最大值设置为一分钟。如果您想保留更长的历史记录,可以使用不同的 maxage 开始多个记录。
参见例如http://isuru-perera.blogspot.com/2015/02/java-flight-recorder-continuous-recordings.html