1. 程式人生 > >性能測試三十二:監控之Java線程監控

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

無限 腳本 lsof 右鍵 定向 log文件 tin lock bubuko

技術分享圖片

線程的五種狀態
* 新建: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

技術分享圖片

技術分享圖片

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