VisualVM连接远程服务器有两种方式:JMX和jstatd,两种方式都不能完美支持所有功能,例如JMX不支持VisualGC,jstatd不支持CPU监控,实际使用可同时配置上并按需选用。
1.修改tomcat/bin目录下catalina.sh文件
JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=${host_ip}
-Dcom.sun.management.jmxremote.port=9999
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false"
重启tomcat。需要保证添加的port没有被其他服务占用。方法:netstat -tlnp | grep 9999。
2. 打开visualvm,通过远程添加新增目标主机。右击添加的目标主机,添加jmx连接。将9999加上去。
3. 如果需要使用远程visual gc插件。则需要在JAVA_OPTS中加上jstatd的配置。
3.1 vi $JAVA_HOME/jre/lib/security/java.policy --一般不建议直接修改这个文件
末尾的}处添加permission java.security.AllPermission;
3.2 按照下面命令启动后会开启注册端口1099和一个随机的连接端口,注册端口也可通过-p参数指定
jstatd -J-Djava.security.policy=all.policy -p 10003 &
trouble shoot 排错
-- 检查linux的hostname匹配的IP
hostname -i
如果匹配的结果是无法识别或者127.0.0.1, 则需要手动配置主机名和IP映射。假设IP是192.168.0.1,主机名是genious:
vi /etc/hosts
添加一行192.168.0.1 genious。重启服务。运行hostname genious可以更改主机。
-- 如果出现无法连接。先查看端口是否开放。
telnet host_ip 9999 如果没开放则会提示connect refused。
-- 如果没有开放。则需要编辑iptables来开放。
/sbin/iptables -I INPUT -p tcp --dport 8000 -j ACCEPT #开启8000端口
/etc/rc.d/init.d/iptables save #保存配置
/etc/rc.d/init.d/iptables restart #重启服务
-- 查看端口是否已经开放
service iptables status
-- 如果没开放则输入
iptables -I INPUT -p tcp --dport 9999-j ACCEPT #开启9999 tcp端口
service iptables save #保存配置
service iptables restart #重启服务
如果iptables编辑后依然无效。可先关闭iptables
service iptables stop 关闭
service iptables start 启动