這兩天系統升級後Redis啓動移動端運行2小時左右就假死掉了,服務沒有任何錯誤。此時我們需要藉助jstack 輸出快照幫我們來排除問題。最後發現連接池沒有可配置化,都是靜態初始化而且初始化連接數量才500左右,並且新增的Jedis調用工具沒有關閉連接這是致命的錯誤資源耗盡就阻塞等待了。
目錄
定位問題
輸出文件命令:jstack -l pid > D:jstack.log
問題排查和解決
請參考我的JVM優化及問題排查手冊:https://download.csdn.net/download/boonya/12049505
Redis 連接池設置初始化太小:
只需要實現連接可調整配置即可,可以參考Redis工具類:Redis連接池及單節點工具與多Redis節點管理工具
其他問題
如下面截圖所示並沒有明顯的有關業務代碼堆棧輸出,但是Tomcat就是阻塞掉了。
可能的原因有三:
- Tomcat沒有使用線程池或設置太小用戶量太大不足以支撐。
- 數據庫連接使用完未關閉導致連接資源耗盡等待空閒
- redis連接使用完未關閉導致連接資源耗盡等待空閒