java-jvisualvm远程监控云服务器上的Tomcat8.5
一、修改要访问的远程主机(Linux)tomcat的catalina.sh文件
1、打开$CATALINA_HOME/bin/catalina.sh,在Execute The Requested Command前加入如下代码:
CATALINA_OPTS="$CATALINA_OPTS -Djava.rmi.server.hostname=云服务器公网IP -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
端口9999可以任意指定,但是要在防火墙和安全组中放开。
二、修改腾讯云服务器的公网IP
网上说要修改服务器的公网IP,不过,我试过之后,这一步不设置也不会影响连接腾讯云服务器的tomcat。
连接服务器地址可以写为公网地址,linux使用命令 hostname -i 查看输出是否为公网地址,不是的话修改/etc/hosts文件,指向公网地址。
[root@VM-0-10-centos bin]# hostname -i
::1 127.0.0.1
进入/etc
cd /etc
vim hosts
修改如下:将127.0.0.1改为腾迅云服务器公网IP
云服务器公网IP VM-0-10-centos VM-0-10-centos 127.0.0.1 localhost.localdomain localhost 127.0.0.1 localhost4.localdomain4 localhost4 ::1 VM-0-10-centos VM-0-10-centos ::1 localhost.localdomain localhost ::1 localhost6.localdomain6 localhost6
三、重启Tomcat服务
四、使用命令 lsof -i:9999 查看端口号是否被监听。
[root@VM-0-10-centos bin]# lsof -i:9999
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 4072 root 22u IPv6 46891175 0t0 TCP *:distinct (LISTEN)
要看监控状态为LISTEN表示已经被占用,也就是说9999将被监听。
五、使用命令 netstat -antup |grep [pid] 查看两个随机端口
jps查看tomcat进程id
[root@VM-0-10-centos bin]# jps
9782 Jps
4072 Bootstrap
查看该pid的
[root@VM-0-10-centos bin]# netstat -antup | grep 4072
tcp6 0 0 :::45023 :::* LISTEN 4072/java
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 4072/java
tcp6 0 0 :::8009 :::* LISTEN 4072/java
tcp6 0 0 :::36361 :::* LISTEN 4072/java
tcp6 0 0 :::9999 :::* LISTEN 4072/java
tcp6 0 0 :::8080 :::* LISTEN 4072/java
会发现tomcat多开启了两个端口号 45023、36361。
因为当我们添加 -Dcom.sun.management.jmxremote.port 参数后不只会开启指定的端口,还会随机开启两个端口号,一个作为Jms的数据通讯端口,另一位作为jconsole的本地连接端口。从阿里云控制台开放指定端口和两个随机端口,如果开启有防火墙,同样放开,不然会导致连接不上。
注意:腾旭云的安全组中一定要放开两个随机端口,否则连接不上。这是第二个大坑。注意:每次启动tomcat,这两个随机端口都会改变。
六、打开jvisualVM连接腾旭云服务器的tomcat
连接上后效果如下: