我正在使用 Java 7 的飞行记录器转储 Hadoop 任务的执行。为此,我使用了这个配置选项:
<property>
<name>mapred.child.java.opts</name>
<value>-XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:FlightRecorderOptions=defaultrecording=true,dumponexit=true,dumponexitpath=/root/recordings</value>
</property>
结果是许多 .jfr 文件(正如预期的那样)。我可以毫无问题地在 Java Mission Control 中打开其中任何一个。但是,如果我尝试使用以下方法将它们连接在一起:
java oracle.jrockit.jfr.tools.ConCatRepository [directory] [-o output_filename]
(取自:http://docs.oracle.com/cd/E15289_01/doc.40/e15070.pdf : http://docs.oracle.com/cd/E15289_01/doc.40/e15070.pdf)
我无法在 Java Mission Control 中打开结果,出现错误“从 condensed.jfr 加载事件时遇到问题。无法从 condensed.jfr 加载事件”。
我做错了什么?
最佳答案
听起来像个错误,如果 JVM 每秒发出十个(或更多)文件,则该工具可能以非时间顺序连接文件,即名为 2014_01_15_20_03_14_35880_10.jfr 的文件将在 2014_01_15_20_03_14_35880_2.jfr 之前出现,这可能会混淆 Mission Control 解析器。
您可以尝试以正确的顺序自己连接文件。
关于java飞行记录器连接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21124400/