開啓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
連接
裝插件
查看