性能測試三十二:監控之Java線程監控


 

 

線程的五種狀態
* 新建:new
* 運行:runnable
* 等待:waitting(無限期等待),timed waitting(限期等待)
* 阻塞:blocked
* 結束:terminated

 

 

線程的兩種監控方法
一,jvisualvm,圖形界面的方式
監控之前先對jvm加監控參數,在tomcat的bin目錄下,catalina.sh文件中,第二行添加:
JAVA_OPTS="-Dcom.sun.management.jmxremote.port=10086 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=10.0.0.9"

1-改port
2-改hostname為本機ip

如果想要監控和多個tomcat,則需要在每一個tomcat下都添加這行參數,且端口號不重復

保存並重啟tomcat

查看10086的進程是否存在:netstat -an|grep 10086

 

或者

查看10086的使用詳情:lsof -i:10086

 

windows_cmd下,輸入(前提,jdk配好環境變量)

配置ip

 

在監控的ip上右鍵_添加JMX連接

填寫端口號

命令行執行 netstat -an|grep 10086

查看線程

 

 

二,jstack pid(進程號):命令行方式,打印當前所有的線程及執行狀態

 

由於此命令會直接把內容展示在屏幕上,不好查看,所以最好重定向輸出

如,把結果打印到a.log文件里面:jstack 8743 > a.log

每一段這種就是一個線程

 

 構建幾個場景看看

構造線程狀態的Java腳本:java -jar thread-test.jar [1|2|3|4]
構造不同的狀態的線程


1:runnable

java -jar thread-test.jar 1

復制一個會話,查看剛剛運行的java的進程

 

2:waitting

java -jar thread-test.jar 2

 

3:timedWaitting

java -jar thread-test.jar 3

 


4:blocked

java -jar thread-test.jar 4

 


免責聲明!

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



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