應用上線后過一段時間數據庫服務無法正常訪問(未正確設置連接池參數)


系統配置了達夢數據源以第二連接池的方式,但是過了一段時間后發現數據庫服務無法正常訪問,訪問返回錯誤

 

 

現在問題就是生產上那個數據源一訪問報錯,提示org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: Attempt to set connection harvestable to false but the connection is already closed

但是重啟該應用后該數據源又能正常訪問。

 

由於該數據源源服務是為多方應用提供數據庫服務,因此我們認為該服務是正常的,問題大概率出現在應用層。

 

通過這篇博客(https://www.cnblogs.com/yadongliang/p/12492419.html)

初步定為懷疑是數據庫連接超時失效了,但是未被回收,導致使用的連接為失效連接,而上訴博客中也是相似問題,定位原因是數據庫連接超時后,與數據庫服務方網絡連接會話失效,導致數據庫連接不可用。

 

訪問weblogic測試環境,數據源連接池配置

參考博客(https://www.cnblogs.com/didispace/p/12291832.html,https://www.cnblogs.com/jefflau/archive/2013/01/06/3244293.html)

 

登錄weblogic控制台頁面,點擊左側菜單欄中“服務”-》“數據源”,點擊szwy2(JNDI數據源名稱),點擊“連接池”頁簽,然后點擊下方的“高級”按鈕,勾選“保留時測試連接”勾選框,“測試表名稱”里填入dual,“非活動超時”里填寫30。如下圖所示。

 

 

 

 

 

 

 主要是設置非活動連接超時,清除連接池中失效的連接,以保證應用下次向連接池中獲取的連接都是可用的數據庫連接。

 

設置以上參數后,問題解決。

根本原因:數據庫連接池未配置相應參數,導致連接池中失效連接未清除,應用請求數據庫連接時,獲取到了失效的連接,無法正常訪問數據庫。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM