1. 程式人生 > >使用Jvisualvm監控執行緒死鎖案例分析

使用Jvisualvm監控執行緒死鎖案例分析

開發工具:Eclipse 
監控工具:jvisualvm
應用伺服器:tomcat 7.8

在做效能測試過程中,一般都會對應用程式進行一些監控,看應用程式在高併發的過程中是否正常執行。今天這裡簡單介紹一個多執行緒死鎖的監控整個過程案例。

1、首先看下兩段多執行緒的程式碼。(特地編寫的異常程式碼,存線上程死鎖)。





2、將以上兩段程式碼打成JSP頁面。





3、使用tomcat對剛才打的jsp頁面進行釋出,然後使用LoadRunner進行併發訪問。
 
4、執行tomcat釋出剛才的專案,並且使用LoadRunner的control進行併發壓測。同時開啟jvisualvm.exe對tomcat進行執行緒監控。
 

5、監控過程中出現了執行緒死鎖的報錯,進行了【執行緒dump】操作,檢視報錯異常,可以清晰看到具體程式碼的報錯位置。
 
6、報錯程式碼在
com.thread2包下的DeadLockThread2類的第10行程式碼。將此報錯反饋給開發人員over。
   異常程式碼分析:兩個執行緒的方法,分別持有了對方的鎖,並且巢狀持有,導致雙發無法釋放鎖,CPU無法獲取到執行許可權,無法執行線    程中的程式碼。