使用jvisualvm、jmc遠端監控JVM
演示環境:jdk1.8
jvisualvm和jmc都是JDK自帶的監控工具。jmc監控資料比jvisualvm更加豐富。它們都在JDK bin目錄中
首先介紹jvisualvm的使用
開啟bin/jvisualvm.exe
本地的JVM程序都已經識別出來了,直接點選即可監控。
為了使jvisualvm功能更加強大,需要安裝一些外掛 執行jvisualvm ,選擇【工具】——【外掛】——【可用外掛】全選安裝即可。
預設jvisualvm不能監控遠端的JVM程序,需要進行一些配置。這裡介紹兩種方式
方法一: 單獨在應用上配置如下JVM啟動引數
-Djava.rmi.server.hostname=192.168.200.136 -Dcom.sun.management.jmxremote.port=18888 -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.managementote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
其中java.rmi.server.hostname配置的是執行JVM所在的機器IP
配置好啟動引數之後,重啟應用
在jvisualvm裡面新增遠端主機 192.168.200.136,然後右鍵新增JMX連線
輸入上面配置的埠即可。 之後就可以看到各種監控的資料了,很多都是實時的。
方法二:使用jstatd
新建一個檔案jstatd.all.policy(名字隨意),內容如下:
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
然後,執行 jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=192.168.200.136
在jvisualvm裡面新增遠端主機 192.168.200.136,然後右鍵新增jstatd連線,埠預設。jvisualvm即可掃描出所有正在執行的JVM,點選即可監控
對比兩種方式,第一種需要在每個JVM引數中都要配置。第二種不需要配置應用的JVM引數,只需要額外啟動一個jstatd即可
接下來介紹另一個JDK自帶的監控工具jmc,開啟bin/jmc.exe 之後,jmc即可掃描出本地執行的JVM程序
選擇一個程序,點開選擇MBean伺服器,右鍵 啟動JMX控制檯,即可看到監控資訊
如果想要用jmc監控遠端的JVM程序,配置方式和jvisualvm方式一一樣即可。