VisualVM是JDK自带的一款全能型性能监控和故障分析工具,包括对CPU使用、JVM堆内存消耗、线程、类加载的实时监控,内存dump文件分析,垃圾回收运行情况的可视化分析等,对故障排查和性能调优很有帮助。在windows中安装JDK后,VisualVM位于%JAVA_HOME%/bin/下,直接执行jvisualvm.exe即可,一个主要运行界面如图:
VisualVM会自动检测本机运行中的JVM并建立连接,本文主要介绍连接远程
Linux
服务器的配置方法,
测试
环境为CentOS 6.5,JDK8,Tomcat8。
VisualVM连接远程服务器有两种方式:JMX和jstatd,两种方式都不能完美支持所有功能,例如JMX不支持VisualGC,jstatd不支持CPU监控,实际使用可同时配置上并按需选用。
jstatd方式连接:
1. 关闭Linux服务器的防火墙:
任意路径下输入命令:
service iptables stop
2. 任意路径下输入命令:
cp $JAVA_HOME/jre/lib/management/jmxremote.password.template jmxremote.password
然后打开
jmxremote.password
文件,去掉
# monitorRole QED 和 # controlRole R&D
这两行前面的注释符号。
再修改权限
chmod 600 jmxremote.password
3.
cd $JAVA_HOME/bin, 查看文件:
cat jstatd.all.policy
文件内容应该是:
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
如果不是,则改为这个内容。
4. 当前目录运行命令:
jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=172.16.80.90 &
若运行报错,检查/etc/hosts文件中是否配置hostname,在此文件添加一行 127.0.0.1 服务器名称
5.
打开jvisualvm, 右键Remort,选择 "Add Remort Host...",在弹出框中输入你的远端IP,比如172.16.80.90. jstatd方式自动连接成功.
完成上面的步骤后,继续打开JMX连接方式:
1. 进入tomcat安装目录bin文件夹下:
cd /usr/share/apache-tomcat-8.5.20/bin
2. 编辑vi catalina.sh, 在文件中:
# Uncomment the following line to make the umask available when using the
# org.apache.catalina.security.SecurityListener
#JAVA_OPTS="$JAVA_OPTS -Dorg.apache.catalina.security.SecurityListener.UMASK=`umask`"
这段下面添加以下内容:
JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=172.16.80.90
-Dcom.sun.management.jmxremote.port=18999
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false"
保存文件
3. 然后./shutdown.sh关闭tomcat, ./startup.sh重启tomcat.
4. VisualVM中,在远程机器上右键add jmx connnection, 连接:172.16.80.90:18999, 不需要用户名和密码,直接确定就连上了。
如果出现VisualVM的visual GC插件没有:
1、可选择先下载一个
VisualGC的离线插件安装包,下载地址:http://download.csdn.net/download/ocean73737/9957102
2、打开Java
VisualVM
在VisualVM》工具》插件》已下载 ,点击添加插件,选择下载的插件打开,再勾选此插件点击安装,等待安装完成后,在已安装下就能看到此插件了,再重启VisualVM后就可以看到VisualGC模块了。