1. 程式人生 > >JDK自帶jvisualvm監控tomcat

JDK自帶jvisualvm監控tomcat

前提條件:本地的Tomcat 在jvisualvm啟動後自動會監控起來,如果是要監控遠端的Linux伺服器的Tomcat需要在Linux中配置JMX。

jdk自帶有個jvisualvm工具、該工具是用來監控java執行程式的cpu、記憶體、執行緒等的使用情況。並且使用圖表的方式監控java程式、還具有遠端監控能力。不失為一個用來監控tomcat的好工具。

在jdk目錄下的bin目錄中可以找到jvisualvm.exe檔案、直接啟動可以看到如下介面:

以上是已經連線遠端的介面。直觀的監控介面、更有助於我們分析tomcat的執行情況。

下面主要介紹下怎麼樣使用本地jvisualvm監控遠端tomcat。

tomcat自帶的監控介紹可以參考:

下面是我的配置方法:

 在tomcat/bin目錄下開啟startup.sh或者startup.bat,在最後一行前面加上,也就是:

?
1 exec "$PRGDIR"/"$EXECUTABLE" start "[email protected]"

前面加上

?
1 export CATALINA_OPTS="$CATALINA_OPTS 
?
1 -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=xxx.xxx.xxx.xxx  -Dcom.sun.management.jmxremote.port=xxx -Dcom.sun.management.jmxremote.ssl=
false -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password  -Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access"

引數說明:

?
1 -Djava.rmi.server.hostname=xxx.xxx.xxx.xxx 主機地址,我配置的是外網地址
?
1 -Dcom.sun.management.jmxremote.port=xxx  埠號、配置完埠號之後需要將此埠開放出來  可以使用命令:iptables -A INPUT -p tcp --d port  埠號 -j ACCEPT
?
1 -Dcom.sun.management.jmxremote.authenticate=true 是否開啟認證、false的時候可以不使用密碼訪問
?
1 -Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password -Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access  以上配置是開啟認證時使用的access檔案和password檔案
其中jmxremote.access檔案的內容可以配置為: ?
1 2 username1 readonly username2 readwrite

jmxremote.password檔案可以配置為:

?
1 2 username1 password1 username2 password2
將以上倆檔案放在對應配置目錄tomcat/conf/下

並且將以上倆個檔案訪問許可權配置成:

?
1 chmod 600 jmx*
如果沒有這一步、使用startup啟動不了tomcat。

按照上述配置、再使用startup.sh啟動tomcat。

接下來就是使用jvisualvm來遠端監控tomcat了

右鍵點選遠端-新增遠端主機-輸入主機ip地址



新增遠端主機之後,點選遠端主機右鍵-新增jmx連線:


彈出登入框

輸入主機名:埠號,如果配置了使用者名稱和密碼,請輸入使用者名稱和密碼。然後點選確定。

點選確定之後、在遠端主機下會有一個jmx連線,開啟連線,點選監視tab,可以看到如下介面了。

在上圖中可以看到cpu利用率和垃圾回收活動(這個在分析tomcat效能時也很重要)。然後是堆疊使用情況。下面是類的使用情況,最後一個是執行緒活動情況。

點選執行緒tab可以看到:

上圖可以非常清晰的看到執行緒活動情況,那些執行緒正在執行,哪些執行緒正在等待中,以及執行完畢的執行緒等。

這裡可以看到每個執行緒的狀態,點選某個執行緒右鍵可以檢視該執行緒的詳細情況:

使用左上角的執行緒dump按鈕,還可以看到執行緒的堆疊情況,這樣就可以具體分析執行緒是在什麼地方進入等待,什麼地方進入休眠,以及什麼地方一直處於執行狀態。這也是一個性能分析利器哦!

以上就是使用jvisualvm的jmx遠端監控tomcat的簡單配置。