一、簡述
在web項目中,常使用tomcat作為web容器。代碼編寫的時候,由於業務需要,也常會使用線程機制。在系統運行一段時間之后,若出現響應慢或線程之間出現死鎖的情況,要查出問題所在,需要使用jdk 提供的 jvuisualvm 工具,通過該工具監視tomcat的線程運行情況,從而解決問題。
tomcat分為linux和windows版的,不同的版本若想使用jvuisualvm進行線程監視,需要進行不同的配置。
二、linux版本的tomcat配置
為了讓本機器上的jvuisualvm 工具能夠監視遠程機器上(linux)的tomcat中線程運行狀況,tomcat需要修改其對應配置。修改如下:
(1) 修改catalina.sh文件
打開該文件,在綠色注釋上加入以下配置。
CATALINA_OPTS="-Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=10.2.145.108" # ----- Execute The Requested Command -----------------------------------------
其中紅色所指IP是tomcat所屬服務器的IP。藍色所指端口為jmx連接時的端口。
(2) linux防火牆配置
在(1) 中指定了jmx連接的端口,此時需要查看linux是否開啟,若開啟,可以將防火牆關閉,或者將端口設置到防火牆中允許通過。
三、windows版本的tomcat配置
windows版本的tomcat,需要查看其啟動方式,若是注冊成了服務,可以通過以下方式進行配置:
(1) 更改注冊表:
在注冊表中找到圖中位置。
雙擊 Options 在其中添加
-Dcom.sun.management.jmxremote
-Djava.rmi.server.hostname=XXXX.XXXX.XXXX(雙網卡的需要指明,單網卡的可以不指定)
-Dcom.sun.management.jmxremote.port=1090
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
之后再重啟tomcat服務即可。
若重啟不成功,請檢查添加的這幾行是不是后面有空格。(若有多余的空格是啟動不了的)
四、jvuisualvm調試
(1) windows下打開java安裝目錄bin目錄下的jvisualvm.exe(C:\Program Files\Java\jdk1.7.0_45\bin);
(2)在遠程上右鍵,添加遠程主機;
(3)、在添加的遠程主機上右鍵,添加Jmx(此處不需要密碼,點擊確定即可);
(4)、雙擊連接查看Jvm運行情況
圖中紅色的表示出現了死鎖的情況,可以通過導出dump來查看問題。