执行jcmd 115 JFR.dump name=continuous_recording
时收到以下错误消息:
115:
Dump failed. No data found in the specified interval.
我使用以下配置开始录制:
XX:StartFlightRecording=disk=true,dumponexit=true,
filename=/home/site/diagnostics/recording.jfr,
maxsize=1024m,maxage=1d,name=continuous_recording
可能是缓冲区尚未填充最小块大小。但是 JFR.check 命令不提供该信息。
更新:
如果我运行 JFR.dump 而不指定记录的名称,我可以从 Java 应用程序获取转储。我尝试用引号封装录音名称(转义和未转义(,并得到与以前相同的错误。
005c736ce3ee:/home# jcmd 115 JFR.dump filename="home/6_10_dump1.jfr"
Picked up JAVA_TOOL_OPTIONS: -Djava.net.preferIPv4Stack=true
115:
Dumped recording, 155.8 MB written to: /home/6_10_dump1.jfr
你使用的是哪个版本的JDK?块不需要填充。
在JDK 11 或更高版本中,如果您指定了要在启动时转储的文件的文件名,但在转储文件时未指定它,则会出现一个错误 [1]。
尝试将此作为解决方法:
$ jcmd 115 JFR.dump filename=recording.jfr
[1] https://bugs.openjdk.java.net/browse/JDK-8220657<</p>
Azul 的支持帮助解决了这个问题。如果在启动 VM 时未指定文件名,则执行以下操作有效:
XX:StartFlightRecording=disk=true,name=continuous_recording,dumponexit=true,maxsize=1024m,maxage=1d
此错误已归档并修复为 JDK-8220657。Azul表示,他们将在未来将其移植到祖鲁8号和11号。