JVM(和Spark)性能优化:使用Java Mission Control (2)
2 基本使用方法
2.1 准备
启动JVM时,必须加上以下选项:
-XX:+UnlockCommercialFeatures -XX:+FlightRecorder 【命令1】
如果要求远程监控其它机器上的JVM,加上-Dcom.sun.management.jmxremote 来手动启动管理代理。
2.2 用JMC来创建记录文件
在JMC的JVM浏览器窗口中找到一个JVM,双击它下面的飞行记录器的节点,再根据向导一步步地操作。具体细节说明可以查阅JMC的帮助,应该是中文的。
2.3 用JMC来创建记录文件
下面的例子是在JVM启动20秒后,记录时长为1分钟的文件:
-XX:+UnlockCommercialFeatures -XX:+FlightRecorder -
XX:StartFlightRecording=delay=20s,duration=60s,name=MyRecording,filename=C:\TEMP\myrecording.jfr,settings=profile
这个settings参数是一个模版的路径或名称;默认的模版位于$JAVA_HOME jre/lib/jfr文件夹下。如果想取得更详细的信息,可以修改日志级别:
-XX:FlightRecorderOptions=loglevel=info
2.4 启用默认的连续记录
在开发的测试环境,经常需要在JVM启动时,默认开启连续的记录,它的记录id是0。可以这样做:
-XX:FlightRecorderOptions=defaultrecording=true
只有默认的记录可以使用dumponexit 和dumponexitpath参数。下面的例子就是启用默认的连续记录,且在JVM退出时(常常是程序运行完成时)把记录文件写在C:\demos\dumponexit.jfr。
-XX:+UnlockCommercialFeatures -XX:+FlightRecorder -
XX:FlightRecorderOptions=defaultrecording=true,dumponexit=true,dumponexitpath=C:\demos\dumponexit.jfr
【命令2】
2.5 使用JCMD随时创建记录文件
在上一步启用默认记录时,特别适合那种长期运行的平台,例如Hadoop和Spark等,这些大数据平台启动后,我们就可以提交应用程序在上面运行了。我们需要在应用程序运行完后就转储出记录文件,分析其性能数据,可以使用:
jcmd
当然,也可以直接通过jcmd启动一个固定时间的记录文件:
jcmd 7060 JFR.start name=MyRecording settings=profile delay=10s duration=2m
【命令3】
如果不知道启动JVM的记录名称,可以检查下:
jcmd 7060 JFR.check
可能较为常用的是dump出记录文件:
jcmd 7060 JFR.dump name=MyRecording filename=C:\TEMP\dump.jfr
【命令4】
- 点赞
- 收藏
- 关注作者
评论(0)