前言
最近在正式环境的浏览器中访问系统,发现速度时快时慢,就想监控一下服务器的jvm的运行情况。
但是只是用JMX连接时,VisualGC显示不支持此JVM。
后来在百度搜索到问题原因,说是要加一个jstatd连接才行,那么开始吧!
00
首先在服务器的${user.home}目录下创建一个文件,文件名称叫做".java.policy",文件内容如下
grant codeBase "file:${java.home}/lib/tools.jar" {
permission java.security.AllPermission;
};
这个目录和文件名称都不能改变,这个是有依据的,可以查看服务器的这个目录下的这个文件.
${java.home}/jre/lib/security/java.security
网上说这个文件在随便的位置可以创建,可能就是在这里面加了配置吧,总之这个地方浪费我挺多时间的。
01
启动一个jstatd连接(最好是在${java.home}/bin目录下执行命令,如果配置了环境变量就无所谓了),使用如下命令
[root@localhost]# jstatd -J-Djava.security.policy=java.all.policy -J-Djava.rmi.server.hostname=192.168.0.150 -p 19000
这里对参数说明一下
- -J-Djava.security.policy=java.all.policy #这个是指定安全策略,指定的是所有的,单独指定应该也可以,我没有研究
- -J-Djava.rmi.server.hostname=192.168.0.150 #指定机器的hostname,挺好理解,我这里是内网测试的写了内容地址,云服务器的话需要填写云服务器的公网IP
- -p #指定端口
02
启动之后,打开本地的jvisualvm,添加一个远程主机
点击确定之后,发现就有一个jstatd连接存在了,这个就是服务器上刚刚启动的jstatd进程,我们可以启动自己的服务
启动一个java服务后
03
对于监控外网服务器的小伙伴,除了我们使用-p参数指定的端口外,还会监听一个随机端口,所以别忘了在防火墙中给这个端口设置放行哦。
END
好了,现在就可以使用jvisualvm和VisualGC监控服务器的JVM了。
新人求关注
原文作者: Zhao Kai
原文链接: http://blog.anyexception.com/archives/使用jvisualvm配合visualgc插件监控远程jvm
版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!