一、修改要访问的远程主机(Linux)tomcat相关文件
1.打开$CATALINA_HOME/bin/catalina.sh,在第一行注释后面添加,也就是#!/bin/sh后添加,
export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote
-Djava.rmi.server.hostname=192.168.*.* -Dcom.sun.management.jmxremote.port=8999
-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true
-Dcom.sun.management.jmxremote.password.file=/opt/apache-tomcat-9.0.1/conf/jmxremote.password
-Dcom.sun.management.jmxremote.access.file=/opt/apache-tomcat-9.0.1/conf/jmxremote.access"
2.备注:
-Dcom.sun.management.jmxremote 启用JMX远程监控
-Djava.rmi.server.hostname=192.168.*.* 连接的服务器地址
-Dcom.sun.management.jmxremote.port=8999 jmx连接端口 可以自己定义
-Dcom.sun.management.jmxremote.ssl=false 是否ssl加密
-Dcom.sun.management.jmxremote.authenticate=true 远程连接需要密码认证(如为false后面的可省略);
-Dcom.sun.management.jmxremote.password.file=/opt/apache-tomcat-9.0.1/conf/jmxremote.password 指定连接的用户名和密码配置文件
-Dcom.sun.management.jmxremote.access.file=/opt/apache-tomcat-9.0.1/conf/jmxremote.access 指定连接的用户所拥有权限的配置文件
连接服务器地址可以写为公网地址,linux使用命令 hostname -i 查看输出是否为公网地址,不是的话修改/etc/hosts文件,指向公网地址。
3.其中jmxremote.password文件:
monitorRole roor123
controlRole root123
4.jmxremote.access文件:
monitorRole readonly
controlRole readwrite
5.重启Tomcat服务。
6.使用命令 lsof -i:8999 查看端口号是否被监听。
7.使用命令 netstat -antup |grep [pid]
会发现tomcat多开启了两个端口号 39143 38202。
因为当我们添加 -Dcom.sun.management.jmxremote.port 参数后不止会开启指定的端口,还会随机开启两个端口号,一个作为Jms的数据通讯端口,另一位作为jconsole的本地连接端口。从阿里云控制台开放指定端口和两个随机端口,如果开启有防火墙,同样放开,不然会导致连接不上。
二、在本地(Windows)创建jvisualvm--JMX连接
1.打开本地安装JDK_HOME/bin目录:{JAVA_HOME}\bin
2.打开:jvisualvm.exe
3.右键添加远程主机:
4.新建JMX连接
右键打开此连接即可。
参考资料:
https://www.cnblogs.com/quyanhui/p/5924474.html
https://blog.csdn.net/caomiao2006/article/details/51589836