一.概述
VisualVM是随JDK发布的功能很强大的运行监视和故障处理程序。除了运行监视,故障处理外,还提供了很多其他方面的功能,如性能分析等。它有一个很大的优点:不需要被监视的程序基于特殊Agent运行,因此它对应用程序的实际性能的影响很小,使得它可以直接应用在生产环境中。
二.插件
官方在VisualVM的软件上描述了All in one Java Troubleshooting Tool字样,这是由于VisualVM支持插件,它可以实现jps,jinfo,jstat,jstack,jmap,jhat等等的功能。安装插件的方式有两种:
1)手工安装:在相关网站找到对应的插件文件,然后在“已下载”菜单下添加插件,这种方式比较麻烦,还是推荐自动安装方式
2)自动安装:选择工具->插件->可用插件。通常情况下会显示空白,这因为我们的默认插件中心地址错了,所以没有可用的插件,可以到git上官方地址上找到对应的插件中心。然后在插件弹出框的设置中配置正确的插件中心地址。配置正确后,在可用插件页面就有相应的可用插件,直接选中安装。下图是已安装好的GC插件
三.监控
1.本地的JVM监控,在VisualVM启动的时候就会自动添加进去。只要点击相应的选项即可监控检查其JVM情况。
2.远程的JVM监控需要简单配置一下即可
1)在远程机器上启动jstatd服务
在JAVA_HOME/bin目录中,执行以下命令:
./jstatd -J-Djava.security.policy=jstatdAllPolicy-p 1099 -J-Djava.rmi.server.hostname=192.168.xxx.xxx
jstatd命令描述以及参数说明:
jstatd是一个基于RMI(Remove Method Invocation)的服务程序,它用于监控基于HotSpot的JVM中资源的创建及销毁,并且提供了一个远程接口允许远程的监控工具连接到本地的JVM执行命令。
-J-Djava.security.policy=jstatdAllPolicy 指定安全策略文件名称
-p 1099 指定启动端口
-J-Djava.rmi.server.hostname=192.168.xxx.xxx 指定本机IP地址,在hosts文件配置不正常时使用,最好加上。
2)在远程机器上开启JMX监控
在需要远程监控的JVM启动时,开启远程监控选项
-Dcom.sun.management.jmxremote.port=1099
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Djava.rmi.server.hostname=192.168.xxx.xxx_
如果是tomcat,需要在 tomcat 的 catalina.sh 中添加如下参数:
JAVA_OPTS=' -Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false'_
3)在VisulVM上添加远程主机
4)在VisualVM上添加JMX链接