使用Java VisualVM分析远程JVM

远程连接

服务器配置

在服务器上创建文件 jstatd.all.policy

1
2
3
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};

后台模式启动jstatd,hostname为服务器外网IP

1
jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=192.168.1.1 &

找不到jstatd命令?安装JDK开发环境:

1
yum install -y java-1.8.0-openjdk-devel.x86_64

查看jstatd监听端口,防火墙放行

1
netstat -tunlp | grep jstatd

下图中的33911端口是随机生成的,每次启动jstatd都会变化
1099是默认端口,可以在jstatd命令中加上 -p 1099 指定

本地连接

启动本地jvisualvm,右键添加远程主机

输入服务器IP,高级设置指定jstatd连接端口,默认1099

添加完成后,左侧列表会显示出远程机上JVM运行的所有程序