一、Jstatd远程监控服务器配置
jstat可以实时显示本地或远程JVM进程中类装载、内存、垃圾收集、JIT编译等数据。如果要显示远程JVM信息,需要远程主机开启RMI支持,详情如下:
1. 在JAVA_HOME/bin目录下创建jstatd服务器授权文件jstatd.all.policy,代码如下:
grant codebase "file:${java.home}/../lib/tools.jar" {permission java.security.AllPermission;};
2. 切换到java/bin目录下,启动Jstatd服务器,执行命令:
./jstatd -J-Djava.security.policy=jstatd.all.policy
注:这时候能启动正常,但是后面本地用 jvisualvm 的时候可能抛异常。
据查,有两种方法解决:
一种是把 /etc/hosts中的ip改成实际的IP,然后重启网络。另一种是,在jstatd后加hostname的参数,如:
./jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=192.168.1.2
3. 如若出现端口占用问题,在启动jstatd服务器时选择其它端口。
//查看端口是否被占用
netstat -ano | grep -i 1099//启动jstatd服务器时,指定其它端口
rmiregistry 2030 & jstatd -J-Djava.security.policy=jstatd.all.policy -p 2030
至此,远程服务器配置完成
4.打开JAVA_HOME/bin目录下的 jvisualvm.exe
在远程上右键,添加远程主机,输入远程服务器IP
在添加的远程主机上右键,添加jstatd连接
可参考:
二、JXM远程监控服务器配置
检查远程服务器host是否是127.0.0.1 , 执行命令 hostname -i 如果是127.0.0.1 。
在etc/hosts 文件中将127.0.0.1改为主机IP,如果不能保存,改权限
chmod +x hosts
在linux下tomcat安装目录下的bin文件夹中的catalina.sh文件中添加如下:
JAVA_OPTS=”-Dcom.sun.management.jmxremote.port=1099
-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=服务器IP”
位置:
#OS specific support. $var _must_ be set to either true or false. //后面
这是不加认证的。以上配置是需要关闭防火墙,如果想不关闭防火墙来访问。需要在iptables里把1099端口给公布出去。
至此,远程服务器配置完成。
打开JAVA_HOME/bin目录下的 jvisualvm.exe
在远程上右键,添加远程主机,输入远程服务器IP
在添加的远程主机上右键,添加JMX连接
参考: