tomcat進入假死卡死現象

最近項目組遇到了一個非常噁心的問題,項目啓動成功後,系統可以正常使用,但是一兩個小時之後,發現系統無法登陸成功,直接卡死!無法正常登陸跳轉到門戶首頁!!!
錯誤信息如下:

2020-01-01 00:29:43 [com.xxxxx.app.aop.LogAspect]-[ERROR] - org.springframework.dao.DataAccessResourceFailureException: could not execute query; nested exception is org.hibernate.exception.JDBCConnectionException: could not execute query

系統使用的架構是nginx+tomcat數據庫使用版本18C
我們嘗試了升級tomcat版本、增加數據庫連接數、提高tomcat內存、升級數據庫連接驅動包(從6升級到8)等等一系列方法,問題很難立即復現,必須等系統一兩個小時之後會卡死!所以嘗試各種以上方案,耗時幾天時間,逐個排除了以上可能性,但是問題還是找不到…真的要崩潰了…
後來終於發現問題,數據庫連接池使用org.apache.commons.dbcp.BasicDataSource,問題就在這裏!!
必須改成org.apache.commons.dbcp2.BasicDataSource
使用驅動包:
commons-dbcp2-2.7.0.jar
commons-pool2-2.7.0.jar

在這裏插入圖片描述
原因分析:用戶登陸成功後,系統會爲了保持心跳,還有後臺一些定時任務,一直會和系統數據庫保持連接,這個時候導致系統的連接被佔用,無法正常釋放,這個就是dbcp數據庫連接連接18C的一個bug!必須要改成dbcp2纔可以!!!!!!!
其實一開始我們看錯誤日誌的時候就判斷是數據庫連接的問題,我們當時嘗試了更換數據庫驅動,但是沒有更換數據庫連接池驅動!!換了就好啦!問題折騰了我們快2周的時候,記錄下問題,有遇到這類問題的親們直接拿走,不謝!!!

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