Java進程假死案例集合

1. 案例1

今天通過域名調一個接口,10次中偶爾有1-2次請求失敗,域名後綁定VIP,VIP後面爲5臺應用服務器。

1.1 範圍縮小

在這裏插入圖片描述
直覺懷疑爲某一臺有有問題,於是單獨的進行接口調用發現確實爲其中一臺有問題

1.2 單臺檢查

本能上來後首先查看進程,進程正常

jps

telnet本地服務端口8099,也是正常的

telnet 127.0.0.1 8099

單獨的curl是出現不可訪問,初步懷疑爲進程假死。

(1) jstack看一下是否有死鎖,無死鎖

jstack -F pid

(2) 看一下gc情況

jstact -gcutil pid 5000

在這裏插入圖片描述
歷史FGC較多,FGC時間非常長,內存耗盡。

(3)查看tomcat日誌

[ERROR] fail to async write log SelfLog, GC overhead limit exceeded
Exception in thread "Druid-ConnectionPool-Destroy-962491367" java.lang.OutOfMemoryError: GC overhead limit exceeded
Exception in thread "http-bio-8099-Acceptor-0" java.lang.OutOfMemoryError: GC overhead limit exceeded

核心要點:GC overhead limit exceeded導致Druid-ConnectionPool銷燬

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章