jvisualvm not suppout this jvm

Visual GC uses the jvmstat technology to gather data from the monitored application. This means that the monitored application must either run locally or there must be a jstatd agent up and running on the remote system. For remote applications added using the JMX connection you will only see the "Not supported for this JVM" message - there's no jvmstat available.

监控远程Java进程的JVM有两个条件:
1、应用运行在本地环境。
2、远程系统启动了jstatd agent

VisualVM监控远程JVM是通过RMI服务器来实现的,因此需要在被监控的远程服务器上启动RMI服务

需要在被监控的服务器上面,通过jstatd来启动RMI服务。
在/usr/local/java/bin/目录下新建个文件jstatd.all.policy 文件内容如下: 

# vi jstatd.all.policy
    grant codebase "file:${java.home}/../lib/tools.jar" {  
        permission java.security.AllPermission;  
    };  

然后通过执行如下的命令启动被监控服务器上的RMI服务:
# jstatd -J-Djava.security.policy=jstatd.all.policy &
如果没有添加jstatd.all.policy会报错信息:
Could not create remote object
access denied (java.util.PropertyPermission java.rmi.server.ignoreSubClasses write)
java.security.AccessControlException: access denied (java.util.PropertyPermission java.rmi.server.ignoreSubClasses write)
        at java.security.AccessControlContext.checkPermission(AccessControlContext.java:374)
        at java.security.AccessController.checkPermission(AccessController.java:546)
        at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
        at java.lang.System.setProperty(System.java:725)
        at sun.tools.jstatd.Jstatd.main(Jstatd.java:122)
        
        
默认端口1099,可设置端口为2020
./jstatd -J-Djava.security.policy=jstatd.all.policy -p 2020 &

jstatd会跟本地的一个ip地址绑定(hostname -i显示的ip地址),可以启动时指定绑定IP:
# jstatd -J-Djava.rmi.server.hostname=192.168.1.115 -J-Djava.security.policy=jstatd.all.policy -p 11099 &

如果绑定的hostname不对可以修改:
# hostname newhostname

posted on 2014-02-18 17:23  aiguang  阅读(558)  评论(0编辑  收藏  举报

导航