spring boot忽然掛掉4個節點的線上事故

因爲機房斷電,致使應用節點6個裏面,忽然掛了4個節點java

一、使用top查看,java線程還在redis

二、查看程序日誌,沒有任何異常網絡

三、使用curl 訪問 "127.0.0.1:port"沒有響應curl

四、使用jstack -l pid >> dump.txt 進行分析工具

發現存在大量相似的信息url

Locked ownable synchronizers:
    - <0x000000008c727158> (a java.util.concurrent.ThreadPoolExecutor$Worker)線程

發現基本上所有都等待着線程 0x0000000087f053f83d

------------------------------------------------------------------------------------------------日誌

最後檢查了一下代碼,發現jedis工具類是抄用了網上了,代碼比較難看懂,可是能夠看到設置了maxWaitMill,也沒有任何使用scan的地方,因此不清楚爲何會形成Pool.getResource死掉了。blog

----------------------------------------------------------------------------------------------------

最後通過金山雲大神、芋艿、CMBC鵬程的指導下發現

由於jedis在2.4.1以後就不支持maxWait屬性了,鏈接等待換成了maxWaitMillis,而若是採用舊的網上的寫法,那麼maxWaitMillis默認一直爲-1,當redis服務出現網絡或其餘問題,就會堵死jedis Pool資源,致使程序假死,一直等待,因此若是使用了jedis,版本又大於2.4.1須要注意一下這個問題

-----------------------------------------------------------------------------------------------------

目前尚未修改線上的配置,等待下一次出現,再修改確認  

相關文章
相關標籤/搜索