天天看點

項目線上假死的排查

項目:spring+hibernate

問題:接口通路幾次之後整個項目出現假死的現象,接口請求能接收到,但是所有的接口都不傳回。現象是日志列印到請求的消息就沒有下文了,也沒發現有報錯。

處理過程:

這種情況很有可能是出現了死鎖,資源被占用耗盡等,且項目沒有相應的異常捕獲列印,是以解決思路是利用自帶的工具jstack工具分析。

1,使用top指令或者ps -ef|grep 項目端口找到PID。

項目線上假死的排查
項目線上假死的排查

2, 找到pid之後使用stack指令

jstack 25539

或者導出來

jstack 25539 >> error.log

此時會發現資訊很多,往下翻找,找到與你項目相關的代碼,其他的架構等自己列印的可以先不看。然後找到相應的代碼。

項目線上假死的排查

相關代碼

項目線上假死的排查

3, 問題出在這,發現session用了沒有關,導緻了資源的用光了,所有資料庫的查詢都不能用了。加上session.close();解決