Java虛擬機器使用jvisualvm工具遠端監控tomcat記憶體
jdk中自帶了很多工具可以用於效能分析,位於jdk的bin目錄下,jvisualvm工具可以以圖形化的方式更加直觀的監控本地以及遠端的java程序的記憶體佔用,執行緒狀態等資訊。
一、配置tomcat
在tomcat的catalina.sh檔案開頭加上如下配置:
JAVA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.184.129 -Dcom.sun.management.jmxremote.rmi.port=9999"
各引數含義:
-Dcom.sun.management.jmxremote:是否支援遠端JMX訪問,預設true;
-Dcom.sun.management.jmxremote.port:是JMX遠端監控埠號,需要在防火牆開放該埠;
-Dcom.sun.management.jmxremote.ssl=false:表示是否對連線開啟SSL加密,預設開啟;
-Dcom.sun.management.jmxremote.authenticate=false :是否需要開啟使用者認證,預設開啟,如果開啟需要額外配置授權檔案;
-Djava.rmi.server.hostname=192.168.184.129:遠端伺服器的主機名;
-Dcom.sun.management.jmxremote.rmi.port=9999:RMI埠號,JMX在遠端連線時,會隨機開啟一個RMI埠作為連線的資料埠,可以和JMX埠號相同。
二、配置主機名
使用hostname -i命令檢視主機名是否為外網訪問ip192.168.184.129:
[root@localhost bin]# hostname -i127.0.0.1 127.0.0.1
發現是127.0.0.1,所以需要修改主機名為192.168.184.129。
(1)修改/etc/sysconfig/network檔案
原檔案內容為:
[root@localhost bin]# cat /etc/sysconfig/networkNETWORKING=yesHOSTNAME=localhost.localdomain
修改HOSTNAME為192.168.184.129,即修改後內容為:
[root@localhost bin]# cat /etc/sysconfig/networkNETWORKING=yesHOSTNAME=192.168.184.129
修改後使用service network restart命令重啟網路服務。
(2)修改/etc/hosts檔案
原檔案內容為:
[root@localhost bin]# cat /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
修改127.0.0.1為192.168.184.129,並刪除第二行ipv6的配置,即修改後檔案內容為:
[root@localhost bin]# cat /etc/hosts192.168.184.129 localhost localhost.localdomain localhost4 localhost4.localdomain4
此時使用hostname -i命令再次檢視主機名,已經修改過來了
[root@localhost bin]# hostname -i192.168.184.129
三、配置防火牆
配置防火牆開放9999埠,編輯/etc/sysconfig/iptables檔案,加入-A INPUT -m state --state NEW -m tcp -p tcp --dport 9999 -j ACCEPT,然後service iptables restart重啟防火牆服務。
四、配置jvisualvm
啟動tomcat後,在windows本地jdk安裝路徑bin目錄下找到jvisualvm.exe,雙擊開啟後左側顯示如下:
在“遠端”上右鍵-->新增遠端主機-->填寫主機名:
點選確定後,遠端選項下多了一條剛才新增的主機列表。右鍵-->新增JMX連線,如下圖,填入JMX遠端連線埠號9999,並勾選“不要求ssl連線”:
點選確定後,左側多了一條pid為6822的遠端連線,6822是遠端tomcat的pid:
雙擊該連線,在右側可以動態檢視jvm的概覽資訊,監控CPU,java堆,元空間,類,執行緒等資料:
五、常見問題
在新增JMX連線的時候,經常會出現如下報錯:
此時可以從以下幾個方向檢查:
(1)檢查tomcat應用是否啟動,或者修改tomcat配置後是否重啟tomcat,確保9999埠處於監聽狀態,檢視命令netstat -nl|grep 9999;
(2)檢查主機名是否和tomcat中配置的主機名相同,如果不同則按照第二步修改主機名;
(3)檢查RMI埠號埠號是否在防火牆進行了配置,如果配置的RMI埠號和JMX埠號不一致,需要在防火牆配置RMI埠號允許訪問,如果沒有配置,則新增-Dcom.sun.management.jmxremote.rmi.port=9999配置RMI埠號。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。