JVM(和Spark)性能优化:使用Java Mission Control (2)

举报
大数据小粉 发表于 2016/11/11 14:20:33 2016/11/11
【摘要】 JVM(和Spark)性能优化:使用Java Mission Control

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】

作者 | 孙奇辉

转载请注明出处:华为云博客 https://portal.hwclouds.com/blogs

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。