1

是否可以自动化 Java 任务控制以每小时将 1 分钟的飞行记录转储到文件夹中?

例如:服务器正在 24/7 运行应用程序,我希望 .jfr 文件每小时自动转储到文件中

4

1 回答 1

1

有一个 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

于 2019-03-20T10:15:46.710 回答