我正在使用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的事件”。
我做错了什么?
答案 0 :(得分:0)
听起来像一个错误,如果JVM每秒发出十个(或更多)文件,那么该工具可能会以非时间顺序连接文件,即名为2014_01_15_20_03_14_35880_10.jfr的文件将在2014_01_15_20_03_14_35880_2.jfr之前出现,这可能会混淆Mission Control解析器。
您可以尝试以正确的顺序自己连接文件。