Visual GC插件「不受此JVM支持」问题

利用visual vm监控服务器上的java虚拟机, 在默认情况下, 是没有办法使用 visual vm的插件visual gc的。 安装插件后打开visual gc的页签, 会显示「不受此JVM支持」

如下图


要解决这个问题需要Java自带的Jstatd服务, 使用步骤如下


第一, 在服务器上的java安装的bin下(如/usr/local/java/jdk1.8.0_91/bin)新建一个文件

 文件名为jstatd.all.policy

 文件内容如下


    grant codebase "file:${java.home}/../lib/tools.jar" { 
        permission java.security.AllPermission; 
    };


第二, 在当前目录中(bin)执行如下命令


./jstatd -J-Djava.rmi.server.hostname=192.168.110.227 -J-Djava.security.policy=jstatd.all.policy -p 9999


命令中的hostname是服务器的IP地址,-p是端口,这两项需要自己指定(网上使用默认IP地址和端口的命令,但我尝试了无法生效)。如果不指定端口。那么端口的默认值为1099。执行完毕后,使用telnet命令测试端口是否被监听。  如果一切正常, 说明jstatd服务已经配置成功了。(

1.启动jstatd

cd $JAVA_HOME/bin
./jstatd -J-Djava.security.policy=all.policy &
启动后会开启注册端口1099和一个随机的连接端口,注册端口也可通过-p参数指定,如./jstatd -J-Djava.security.policy=all.policy -p 10003 &
2.设置防火墙
除了把1099添加到防火墙规则外,还需要找到另外一个随机端口,也加入到规则中
执行
netstat -anp | grep *jstatd

可以看到除了1099,jstatd还监听了53040端口,把这个也加入到规则中,添加方法参照2.5
(注意:这个随机端口重启后会变化))

 

第三,在电脑上打开visual vm软件,右击左侧菜单中的「远程」菜单项,输入目标服务器IP地址添加一个远程主机。 然后再右击新加的主机菜单项, 在弹出的菜单中选择「添加jstatd连接」。 在弹出的对话框中的文本框中输入在第二步配置中指定的端口号(默认是1099)



点击确定后,Visual GC插件就可以正常使用了


参考:

Visual GC插件「不受此JVM支持」问题


 


你可能感兴趣的:(jvm)