性能測試三十二:監控之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
性能測試三十二:監控之Java線程監控