Java VisualVM监控远程JVM
本次使用的是jdk1.8,tomcat8.5
1.首先在输入hostname -i,查看本机的ip,若出现的是127.0.0.1,则需要设置映射,使用root账号
vi /etc/hosts #编辑hosts文件
在文件中添加
ip 主机名
保存退出即可,主机名可以通过hostname查看
2.编辑tomcat目录下的setenv.sh文件(没有就新建)
JAVA_OPTS="-Djava.rmi.server.hostname=ip -Dcom.sun.management.jmxremote.rmi.port=8180 -Dcom.sun.management.jmxremote.port=8180 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
3.设置防火墙规则,将2中的的端口号排除在防火墙规则外
vi /etc/sysconfig/iptables
如图
service iptables restart #重启防火墙
/sbin/iptables -L -n #查看开放端口
4.在本地cmd中 telnet ip:端口,若是通,说明配置成功
5.重器tomcat服务器,使配置生效
6.在本地jdk目录下的bin目录内找到jvisualvm.exe,双击打开程序,在远程-》添加远程主机-》输入远程主机ip,如图
在新建的远程主机上右键,添加jmx连接,填入端口号即可,如图
连接成功,如下
7.解决不支持visual gc
vi $JAVA_HOME/jre/lib/security/java.policy
在文件末尾的};前面加上
permission java.security.AllPermission;
进入jdk目录下的bin目录,执行
./jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=192.168.106.39 -p 8182 -J-Djava.rmi.server.logCalls=true
以上的ip和端口根据实际情况设置
在java visualVM添加jstast连接即可,若关掉jstatd,则需要再次在bin目录下执行
./jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=192.168.106.39 -p 8182 -J-Djava.rmi.server.logCalls=true
如下
8.使用插件
由于默认的插件地址被墙,因此可以可在工具-》插件-》设置-》插件中心-》编辑中修改地址,即可获取到插件,推荐以下地址
https://visualvm.github.io/pluginscenters.html,这个地址下有各个版本jdk的插件地址,可以根据实际选择具体的地址,我的是
jdk1.8.0_122的,因此选择了如下地址https://visualvm.github.io/archive/uc/release138/updates.xml.gz