我使用Java7的飞行记录器来转储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任务控制中打开任何一个。但是,如果我尝试使用以下方法将它们连接在一起:
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任务控制中打开结果,错误为“从condensed.jfr加载事件遇到问题。无法从“condensed.jfr”加载事件。
我做错什么了?
1条答案
按热度按时间vecaoik11#
听起来像是一个bug,如果jvm每秒发出10个(或更多)文件,那么该工具可能会以非时间顺序连接文件,即一个名为2014\u 01\u 15\u 20\u 03\u 14\u 35880\u 10.jfr的文件将出现在2014\u 01\u 15\u 20\u 03\u 14\u 35880\u 2.jfr之前,这可能会混淆任务控制解析器。
您可以尝试以正确的顺序连接这些文件。