Druid連接池TestOnBorrow


 

1、當TestOnBorrow=false時

生產環境連接池TestOnBorrow設置為false,導致有時獲取的連接不可用。

TestOnBorrow=false時,由於不檢測池里連接的可用性,於是假如連接池中的連接被數據庫關閉了,應用通過連接池getConnection時,都可能獲取到這些不可用的連接,且這些連接如果不被其他線程回收的話,它們不會被連接池被廢除,也不會重新被創建,占用了連接池的名額。

 

2、當TestOnBorrow=true時

有兩種情況:

① 集群某實例宕掉時,如果連接剛好不處於通信階段,tcp連接正處於CLOSE_WAIT狀態或已關閉,當應用通過連接池getConnection時,在borrow時會檢測連接,由於連接已關閉,於是報了如下報錯,並重新建立新連接,此時的新連接到集群的其他實例上了。后面能正常通信。

② 集群某實例宕掉時,如果連接剛好處於通信階段,由於客戶端無法立即感知服務端已斷連接,它可能會報如下錯誤,等待服務端的響應超時報錯。當應用通過連接池getConnection時,在borrow時會檢測連接,由於連接已關閉,於是報了如下報錯,並重新建立新連接,此時的新連接到集群的其他實例上了。后面能正常通信。


免責聲明!

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



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