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