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檔案
|
1 2 |
username1 readonly
username2 readwrite
|
jmxremote.password檔案可以配置為:
?1 2 |
username1 password1
username2 password2
|
並且將以上倆個檔案訪問許可權配置成:
?1 |
chmod 600
jmx*
|
按照上述配置、再使用startup.sh啟動tomcat。
接下來就是使用jvisualvm來遠端監控tomcat了
右鍵點選遠端-新增遠端主機-輸入主機ip地址
新增遠端主機之後,點選遠端主機右鍵-新增jmx連線:
彈出登入框
輸入主機名:埠號,如果配置了使用者名稱和密碼,請輸入使用者名稱和密碼。然後點選確定。
點選確定之後、在遠端主機下會有一個jmx連線,開啟連線,點選監視tab,可以看到如下介面了。
在上圖中可以看到cpu利用率和垃圾回收活動(這個在分析tomcat效能時也很重要)。然後是堆疊使用情況。下面是類的使用情況,最後一個是執行緒活動情況。
點選執行緒tab可以看到:
上圖可以非常清晰的看到執行緒活動情況,那些執行緒正在執行,哪些執行緒正在等待中,以及執行完畢的執行緒等。
這裡可以看到每個執行緒的狀態,點選某個執行緒右鍵可以檢視該執行緒的詳細情況:
使用左上角的執行緒dump按鈕,還可以看到執行緒的堆疊情況,這樣就可以具體分析執行緒是在什麼地方進入等待,什麼地方進入休眠,以及什麼地方一直處於執行狀態。這也是一個性能分析利器哦!
以上就是使用jvisualvm的jmx遠端監控tomcat的簡單配置。