使用JMX方式连接到tomcat,连接后能够查看前边的部分内容,但是不能查看Visual GC,显示不受此JVM支持,
对了,要显示Visual GC,首先要安装visualvm工具,具体安装方式就是根据自己的jdk版本下载对应的Java VisualVM插件,然后通过Java自带的Java VisualVM工具菜单栏上的工具→插件→已下载插件进行安装,安装后记得重启Java visualVM工具
插件下载地址:
VisualVM: Plugins Centers
https://visualvm.github.io/pluginscenters.html
安装完成后,默认显示部分本地的jvm项目,其中,可以看到本地idea启动了部分进程,可以点击查看,
但是连接到远程tomcat,需要进行部分配置,可以参考文章:
通过Tomcat开启JMX监控的方法图解_Tomcat_服务器之家
注意,编辑的catalina中的ip是服务端的自身的ip,不是连接tomcat的主机的ip,编辑完tomcat的catalina.sh配置后,重启tomcat,最好也重启一下visualGC工具
然后按照图解说明连接上远程tomcat
图:
这里可以发现远程连接后不能正常显示VisualGC的内容,插件不支持visualGC通过JMX方式连接远端已运行的jvm,这时要通过另一个方式jstatd方式进行连接
参考文章:
VisualVM jstatd JVM VisualVM jstatd连接服务器JVM - 大手牵小手 - 博客园
这里的ip也是你服务端的ip,不是自己本机ip,还有就是防火墙一定要关,要注意一下,配置完成后,把tomcat停了,还有之前启动的jstatd进程杀掉,然后重启tomcat,重新使用以下命令进行启动jstatd,
进入jdk8的bin目录
cd /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-1.el7.x86_64/bin
./jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=192.168.202.11 -p 12345 &
启动完成后,使用 jstatd 方式进行连接
端口号也输入一下12345
再去点击VisualGC就能正常查看了,这时候,可以把之前添加的JMX删了,然后重新添加一个JMX,然后再点击VisualGC就能正常查看了
连接由java -jar命令执行的java文件
修改脚本
#!/bin/bash
nohup java -Djava.rmi.server.hostname=18x.xx.xx.106 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.rmi.port=1099 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -XX:+PrintGC -XX:+PrintCommandLineFlags -Xms256m -Xmx256m -jar /home/seagull/java/learning-mobile-api.jar > /var/log/java/istudy-api.log 2>&1 &
改为服务器的ip
jvisualvm这边然后按照上述方式添加:远程 → 添加远程主机 → 右击添加的远程主机 → 添加JMX连接 → 输入IP+端口,点击确定就可以了