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

连接上后效果如下: