JAVA性能调优:VisualVM使用Jstatd远程监控服务器配置详解
豆豆 2019-12-26 19:29:13 992人已围观
VisualVM有Jstatd和JMX 2种远程监控配置,在上一篇文章中已经介绍了JMX的配置介绍,在这里详细介绍一下jstatd的配置方式。jstatd可以实时显示本地或远程JVM进程中类装载、内存、垃圾收集、JIT编译等数据。如果要显示远程JVM信息,需要远程主机开启RMI支持,详情如下:
1. 在JAVA_HOME/bin目录下创建jstatd服务器授权文件jstatd.all.policy,文件内的代码如下:
grant codebase "file:${java.home}/../lib/tools.jar"{permission java.security.AllPermission;};
文件创建后需要给该文件加上执行权限 chmod +x jstatd.all.policy,如下图:
2. 在启动jstatd之前需要做一些检查:
2.1、查看端口是否被占用 :
netstat -ano | grep -i 1099
如果显示的状态是LISTEN就表示被占用了,没有则表示可用状态。
2.2、检查linux的hostname匹配的IP,执行:hostname -i 命令。如果匹配的结果是无法识别或者127.0.0.1, 则需要手动配置主机名和IP映射。假设要用于建立连接的IP是192.168.11.233,主机名 是mylinux:
vi /etc/hosts
添加一行
192.168.11.233 mylinux
2.3、JDK的环境变量JAVA_HOME,CLASSPATH,PATH都得配置好,检查命令:cat /etc/profile :
2.4、其他
3. 切换到java/bin目录下,启动Jstatd服务器,执行命令:
./jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=192.168.19.114 -J-Djava.rmi.server.logCalls=true //注意:这里的IP是远程服务器外网IP
jstatd命令描述以及参数说明:
statd是一个基于RMI(Remove Method Invocation)的服务程序,它用于监控基于HotSpot的JVM中资源的创建及销毁,并且提供了一个远程接口允许远程的监控工具连接到本地的JVM执行命令。
-J-Djava.security.policy=jstatdAllPolicy 指定安全策略文件名称
-p 1099 指定启动端口
-J-Djava.rmi.server.hostname=192.168.xxx.xxx 指定本机IP地址,在hosts文件配置不正常时使用,最好加上。
3. 如若出现端口占用问题,在启动jstatd服务器时选择其它端口。
//启动jstatd服务器时,指定其它端口
rmiregistry 2030 & jstatd -J-Djava.security.policy=jstatd.all.policy -p 2030
至此,远程服务器配置完成
4.打开JAVA_HOME/bin目录下的 jvisualvm.exe
在远程上右键,添加远程主机,输入远程服务器IP
在添加的远程主机上右键,添加jstatd连接
参考文章:
1、http://docs.oracle.com/javase/6/docs/technotes/tools/share/jstatd.html
2、https://www.cnblogs.com/grey-wolf/p/9234780.html