开启jstatd监控本机Java进程服务
/opt/java/jdk1.8.0_131/jre/lib/security/java.policy 添加权限
permission java.security.AllPermission;
执行命令
/opt/java/jdk1.8.0_131/bin/jstatd
-J-Djava.security.policy=jstatd.all.policy
-J-Djava.rmi.server.hostname=xx.xx.xx.xx
-J-Djava.rmi.server.logCalls=true
(default -p 1099)
查看服务
jstatd启动后会打开两个端口,其中一个端口可通过参数“-p”指定,如果不指定默认为1099,另一个是一个随机端口,不能参数指定:
sudo netstat -lpnt | grep jstatd
tcp 0 0 0.0.0.0:1099 0.0.0.0:* LISTEN 27519/jstatd
tcp 0 0 0.0.0.0:46461 0.0.0.0:* LISTEN 27519/jstatd
46461是一个随机端口,不方便穿透防火墙。这导致了一个问题,有防火墙时,JVisualVM将无法和jstatd正常通讯。看到的现象将如下
FINER: RMI TCP Connection(2)-xx.xx.xx.xx: [xx.xx.xx.xx: sun.rmi.registry.RegistryImpl[0:0:0, 0]: java.rmi.Remote lookup(java.lang.String)]
Java VisualVM 进行连接查看
打开java visualVM
/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/bin/jvisualvm
连接
装插件
查看