1. 程式人生 > 程式設計 >Java虛擬機器使用jvisualvm工具遠端監控tomcat記憶體

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,雙擊開啟後左側顯示如下:

Java虛擬機器使用jvisualvm工具遠端監控tomcat記憶體

在“遠端”上右鍵-->新增遠端主機-->填寫主機名:

Java虛擬機器使用jvisualvm工具遠端監控tomcat記憶體

點選確定後,遠端選項下多了一條剛才新增的主機列表。右鍵-->新增JMX連線,如下圖,填入JMX遠端連線埠號9999,並勾選“不要求ssl連線”:

Java虛擬機器使用jvisualvm工具遠端監控tomcat記憶體

點選確定後,左側多了一條pid為6822的遠端連線,6822是遠端tomcat的pid:

Java虛擬機器使用jvisualvm工具遠端監控tomcat記憶體

雙擊該連線,在右側可以動態檢視jvm的概覽資訊,監控CPU,java堆,元空間,類,執行緒等資料:

Java虛擬機器使用jvisualvm工具遠端監控tomcat記憶體

五、常見問題

  在新增JMX連線的時候,經常會出現如下報錯:

Java虛擬機器使用jvisualvm工具遠端監控tomcat記憶體

此時可以從以下幾個方向檢查:

(1)檢查tomcat應用是否啟動,或者修改tomcat配置後是否重啟tomcat,確保9999埠處於監聽狀態,檢視命令netstat -nl|grep 9999;

(2)檢查主機名是否和tomcat中配置的主機名相同,如果不同則按照第二步修改主機名;

(3)檢查RMI埠號埠號是否在防火牆進行了配置,如果配置的RMI埠號和JMX埠號不一致,需要在防火牆配置RMI埠號允許訪問,如果沒有配置,則新增-Dcom.sun.management.jmxremote.rmi.port=9999配置RMI埠號。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。