LINUX下开启jvisualvm远程查看JVM
- 第一步使用xhell登录linux服务器,在服务器上需要做如下配置
在{JAVA_HOME}/bin目录建立文件,
使用vi或者touch命令创建文件jstatd.all.policy
粘贴如下内容
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
- 运行jstatd程序
nohup jstatd -J-Djava.security.policy=jstatd.all.policy -p 8066 >/dev/null 2>&1 &
使用命令查看 ps -ef |grep jstatd, 我这里不小心启动了两个,kill 掉一个即可。
- 使用 lsof -i:8066 查看端口是否启动,成功显示如下信息
4.防火墙开启8066+8067端口供远程连接使用
使用命令 service firewalld status 查看防火墙状态。一般都是开启状态。
使用命令开启防火墙端口
firewall-cmd --query-port=8066/tcp
此时可能会报以下错误,把防火墙重启一下
关闭防火墙命令: systemctl stop firewalld
开启防火墙命令: systemctl start firewalld
查看防火墙是否启动:service firewalld status
看到running就说明启动了
查询8066端口是否添加进防火墙
firewall-cmd --query-port=8066/tcp
firewall-cmd --query-port=8067/tcp
这里返回no是没有添加,添加命令:firewall-cmd --add-port=8066/tcp --permanent
至此,防火墙端口已经开放。
重启防火墙:firewall-cmd --reload
这时也要开放云服务器的端口(一定要打开,要不还是访问不了 8066 + 8067 端口)。
5.在启动jar程序时,需要添加一些参数,这样后续可以远程监控
或者在tomcat的catalina.sh中配置如下信息
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=8.131.235.108 -Dcom.sun.management.jmxremote.port=8067 -Dcom.sun.management.jmxremote.rmi.port=8067 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.password.file=/workspace/config/jvmpassword.cfg
-Dcom.sun.management.jmxremote.access.file=/workspace/config/jvmaccess.cfg"
不是tomcat配置,程序启动时需要添加的参数
java -Xms1024m -Xmx10240m -Xmn3840m -Xss512k -Djava.io.tmpdir=./tmp -Djava.rmi.server.hostname=10.150.133.2 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8067 -Dcom.sun.management.jmxremote.rmi.port=8067 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false
6.启动本地监控工具。
1>可以直接进入到jdk下的bin目录点击 jvisualvm.exe
2>可以 cmd 黑窗口中,输入jvisualvm
这时 jvisualvm 就会启动,输入服务器中的主机IP。
添加后远程菜单下,就显示出来一个ip,右键添加JMX,这时连接要输入JMX端口地址8067,点击确定,此时就可以看到远端服务器上JVM的运行情况了。