JVM 監控工具 jstack 和 jvisualvm 的使用


Java線程狀態

線程的五種狀態

* 新建:new(時間很短)

* 運行:runnable

* 等待:waitting(無限期等待),timed waitting(限期等待)

* 阻塞:blocked

* 結束:terminated(時間很短)

Jvm監控工具

一、jstack

介紹:

jstack用於打印出給定的java進程ID或core file或遠程調試服務的Java堆棧信息。
如果是在64位機器上,需要指定選項"-J-d64",Windows的jstack使用方式只支持以下的這種方式:jstack [-l] pid
如果java程序崩潰生成core文件,jstack工具可以用來獲得core文件的java stack和native stack的信息,從而可以輕松地知道java程序是如何崩潰和在程序何處發生問題。
另外,jstack工具還可以附屬到正在運行的java程序中,看到當時運行的java程序的java stack和native stack的信息, 如果現在運行的java程序呈現hung的狀態,jstack是非常有用的。

使用:

1、查看運行程序的進程號

2、jstack dump當前線程狀態

3、根據當前抓取到的信息進行進一步的分析

二、jvisualvm遠程監控tomcat

1、在 $CATALINA_HOME/bin/startup.sh 倒數第二行(也就是exec "$PRGDIR"/"$EXECUTABLE" start "$@"一行上邊)加上如下內容:

復制代碼
export CATALINA_OPTS="$CATALINA_OPTS
-Dcom.sun.management.jmxremote
-Djava.rmi.server.hostname=192.168.1.130
-Dcom.sun.management.jmxremote.port=7003
-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"
復制代碼

各個參數的說明如下:

復制代碼
-Dcom.sun.management.jmxremote 啟用JMX遠程監控
-Djava.rmi.server.hostname=192.168.1.130  這是連接你的tomcat服務器地址
-Dcom.sun.management.jmxremote.port=7003  jmx連接端口
-Dcom.sun.management.jmxremote.ssl=false  是否ssl加密
-Dcom.sun.management.jmxremote.authenticate=true  遠程連接需要密碼認證
-Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password  指定連接的用戶名和密碼配置文件
-Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access  指定連接的用戶所擁有權限的配置文件
復制代碼

2、在$CATALINA_HOME/conf/jmxremote.access里添加可以連接監控的用戶名以及權限:

monitorRole readonly
controlRole readwrite

3、在$CATALINA_HOME/conf/jmxremote.password 里添加可以連接監控的用戶名以及密碼,用戶的權限在jmxremote.access里以及配置了:

monitorRole  111111
controlRole   222222

4、修改jmxremote.access和jmxremote.password的權限:

sudo chmod 600 jmx*

5、重啟tomcat就可以了

6、在本地的$JAVA_HOME/bin下雙擊jvisualvm.exe打開如下圖:

7、在遠程上右擊,添加主機,輸入服務器的ip:

8、在遠程主機上右擊,添加JMX連接,我的端口號是7003,確定:

9、這是會提示輸入用戶名和密碼,也就是你在jmxremote.password里設置的用戶名和密碼:

10、輸入正確的用戶名和密碼后,鏈接進去打開連接將會看到如下畫面:

這時就可以查看服務器的資源情況、以及tomcat的線程情況等。

 

 


 -END-


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM