VisualVM是JDK自带的一款全能型性能监控和故障分析工具,包括对CPU使用、JVM堆内存消耗、线程、类加载的实时监控,内存dump文件分析,垃圾回收运行情况的可视化分析等,对故障排查和性能调优很有帮助。在windows中安装JDK后,VisualVM位于%JAVA_HOME%/bin/下,直接执行jvisualvm.exe即可,一个主要运行界面如图:
然后添加JMX连接
输入ip:port直接点击确定完成连接
如果提示
无法使用 service:jmx:rmi:///jndi/rmi://xxx.xxx.xxx.xxx:33306/jmxrmi 连接到 xxx.xxx.xxx.xxx:33306
请把防火墙关一下

配置jmx加入启动参数(无需密码连接)
java \
#添加jmx远程支持start
-Djava.rmi.server.hostname=47.106.xxx.xxx \
-Dcom.sun.management.jmxremote=true \
-Dcom.sun.management.jmxremote.port=33306\
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
#添加jmx远程支持end
-jar web.jar
配置密码连接
1.找到以下路径下
%JAVA_HOME%/jre/lib/management
可以看到
jmxremote.access
monitorRole readonly
controlRole readwrite \
create javax.management.monitor.*,javax.management.timer.* \
unregister
jmxremote.password.template 两个文件
# monitorRole QED
# controlRole R&D
新建一个jmxremote.password文件
vim jmxremote.password
输入内容
monitorRole xx
controlRole xxx
修改权限
chmod 600 jmxremote.password
chmod 600 jmxremote.access
设置
-Dcom.sun.management.jmxremote.authenticate=true \
-Dcom.sun.management.jmxremote.access.file=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.252.b09-2.el7_8.x86_64/jre/lib/management/jmxremote.access \
-Dcom.sun.management.jmxremote.password.file=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.252.b09-2.el7_8.x86_64/jre/lib/management/jmxremote.password \
VisualVM建立连接
在本地(windows)jdk目录下的bin目录里,打开jvisualvm.exe,右键“远程”添加主机名

然后添加JMX连接

输入ip:port直接点击确定完成连接

image.png
如果提示
无法使用 service:jmx:rmi:///jndi/rmi://xxx.xxx.xxx.xxx:33306/jmxrmi 连接到 xxx.xxx.xxx.xxx:33306
请把防火墙关一下
service iptables stop
因为除了JMX server指定的监听端口号外,JMXserver还会监听一到两个随机端口号,如果你不想关闭防火墙可以执行以下操作:
1.拿到当前监听的端口
netstat -tupln |grep 33306

2.查看监听的随机端口
#lsof 没有安装的话 安装一个 yum install lsof
lsof -i|grep 2516

3.把这几个端口配置到安全组