使用 maxsize=1g 的飞行记录器仍会返回缺少时间窗口的跟踪
Posted
技术标签:
【中文标题】使用 maxsize=1g 的飞行记录器仍会返回缺少时间窗口的跟踪【英文标题】:Using flight recorder with maxsize=1g still returns a trace with a missing time window 【发布时间】:2016-02-22 12:27:35 【问题描述】:我有一个资源密集型、基于 java-8 的命令行应用程序,我经常使用飞行记录器对其进行分析。我经常注意到的是,当我在任务控制中打开飞行记录器文件(jfr)时,我会看到该进程运行的完整时间跨度,但我错过了该时间窗口前 60-70% 的事件。
我尝试过使用飞行记录器选项,这是我目前正在使用的:
-Djava.library.path=/some/path/lib -Xmx50G -XX:+UnlockCommercialFeatures -XX:+UseG1GC -XX:+FlightRecorder -XX:StartFlightRecording=name=MyRecording,settings=profile -XX:FlightRecorderOptions= defaultrecording=true,maxsize=1g,maxage=1h,dumponexit=true,dumponexitpath=/some/path"
我希望这会自动捕获记录,当过程完成时,记录将保存到 /some/path,并且它保存的文件将达到千兆字节。有谁知道提供的正确选项是什么?
【问题讨论】:
【参考方案1】:我会回答我自己的问题。经过一些实验和反复试验后,您似乎需要添加“disk=true”。
所以最终的java args变成了:
-Djava.library.path=/some/path/lib -Xmx50G -XX:+UnlockCommercialFeatures -XX:+UseG1GC -XX:+FlightRecorder -XX:StartFlightRecording=name=MyRecording,settings=profile -XX:FlightRecorderOptions= defaultrecording=true,disk=true,maxsize=1g,maxage=1h,dumponexit=true,dumponexitpath=/some/path"
【讨论】:
命令行可以简化,如果你运行的是JDK8u40或更高版本。 +UnlockCommercialFeatures -XX:StartFlightRecording=name=MyRecording,settings=profile,filename=/some/path/myrecording.jfr,maxsize=1g,maxage=1h,dumponext=true以上是关于使用 maxsize=1g 的飞行记录器仍会返回缺少时间窗口的跟踪的主要内容,如果未能解决你的问题,请参考以下文章
踩坑记录Mysql查询使用group_concat函数后,如果查询无结果,仍会返回一条空数据
踩坑记录Mysql查询使用group_concat函数后,如果查询无结果,仍会返回一条空数据