VisualVM远程连接监控JVM(JMX连接)

VisualVM是JDK自带的一款java应用性能监测工具。它可以做到:

  • 显示虚拟机进程以及进程的配置,环境信息
  • 监视应用程序的CPU,GC,堆,方法区以及线程的信息
  • dump以及分析堆转储快照
  • 方法级的程序运行性能分析,找出调用最多,运行时间最长的方法
  • 离线程序快照:收集程序的运行时配置,纯种dump,内存dump等信息建立一个快照,可以将快照发送给开发者进行Bug反馈
  • 其他pulgins的功能支持。。。
    当我们的应用上线(一般都会布署在虚拟机上)后,有时需要对其进行性能分析,此时我们可以用本地的VisualVM远程连接虚拟机上的应用来达到查看监控JVM的目的

开始

我这里启动的是springboot应用,是以jar包形式启动的哦。
先看一下当前的主机地址是否和公网地址(外网访问的地址)一致

hostname -i

如果显示的地址不一致的话,请先在/etc/hosts文件里添加一行,例如

47.106.xxx.xxx wesker

然后再执行看看生效了没有

hostname wesker
hostname -i

加入启动参数

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

这里没有开户登陆鉴权和ssl连接,所以authenticate=falsessl=false
端口需要配置允许远程访问,具体配置流程可参考我的另一篇文章
阿里云服务器(centos7) 设置mysql账号密码开放3306端口实现远程登陆

VisualVM建立连接

在本地(windows)jdk目录下的bin目录里,打开jvisualvm.exe,右键“远程”添加主机名

VisualVM远程连接监控JVM(JMX连接)_第1张图片
image.png

然后添加JMX连接
VisualVM远程连接监控JVM(JMX连接)_第2张图片
image.png

输入ip:port直接点击确定完成连接
VisualVM远程连接监控JVM(JMX连接)_第3张图片
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
image.png
  1. 查看监听的随机端口
#lsof 没有安装的话 安装一个 yum install lsof
lsof -i|grep 2516
VisualVM远程连接监控JVM(JMX连接)_第4张图片
image.png
  1. 把这几个端口配置到安全组规则去吧(很麻烦,每次都要设置,所以我直接关防火墙省事多了)

结束

看一下连接成功的界面吧


VisualVM远程连接监控JVM(JMX连接)_第5张图片
image.png

你可能感兴趣的:(VisualVM远程连接监控JVM(JMX连接))