使用jstact排查死鎖

2021-09-29 17:34:16 字數 891 閱讀 9440

1、死鎖定義:

/**

* 死鎖測試

**/public

class

deadlocksample

extends

thread

public

void

run()}

catch

(interruptedexception e)}}

public

static

void

main

(string[

] args)

throws interruptedexception

}

執行程式發現(程式無法繼續執行,且沒有停止):

此時就是執行緒出現死鎖了。

3、利用jstack定位死鎖:

(1)、 在cmd視窗,使用jps指令查詢該類的埠號(3408):

(2)、再使用 jstack + 埠號檢視日誌(jstack 3408):

發現出現死鎖,並且該日誌也定位了出現死鎖的位置,接下來就是進行修復工作了!

tip:在實際應用中,死鎖情況未必有如此清晰的輸出,但是總體上的分析步驟為: 區分執行緒狀態 -> 檢視等待目標 -> 對比 monitor 等持有狀態

MySQL死鎖排查

答 1 檢視當前事務中是否有鎖資訊 select trx id,trx state,trx started,trx requested lock id,trx weight from innodb trx 2 檢視鎖資訊 表鎖or行鎖,鎖的那張表 select lock id,lock trx id...

MySQL死鎖排查

死鎖查詢方式 1 檢視當前事務中是否有鎖資訊 select trx id,trx state,trx started,trx requested lock id,trx weight from innodb trx 2 檢視鎖資訊 表鎖or行鎖,鎖的那張表 select lock id,lock t...

mysql死鎖排查過程

即lock wait timeout exceeded try restarting transaction的異常,錯誤提示的意思,很明顯,是因為這條語句被鎖住了,所以釋放這個鎖。解決方案 我們可以通過到information schema中來進行查詢被鎖的語句。解釋 information sch...