JDK jstatd 结合Java VisualVM进行远程监控JVM运行情况

开启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

连接
在这里插入图片描述
装插件
在这里插入图片描述

查看
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章