druid連接池的超時回收機制

<!-- 打開removeAbandoned功能 -->
		<property name="removeAbandoned" value="true" />
		<!-- 1800秒,也就是30分鐘 -->
		<property name="removeAbandonedTimeout" value="1800" />
		<!-- 關閉abanded連接時輸出錯誤日誌 -->
		<property name="logAbandoned" value="true" />

數據庫有些連接會忘記關閉,這樣連池的連接就會逐漸達到maxActive直至連接池無法提供服務。

使用druid連接池的超時回收機制就可以解決連接泄露問題

上面的代碼解析如下:

設置removeAbandoned="true"時,當連接池連接數到達(getNumIdle() < 2) and (getNumActive() > getMaxActive() - 3)  [空閒的連接小於2並且活動的連接大於(最大連接-3)] 時便會啓動連接回收,

那種活動時間超過removeAbandonedTimeout="1800"的連接將會被回收,

同時如果logAbandoned="true"設置爲true,程序在回收連接的同時會打印日誌。

removeAbandoned是連接池的高級功能,理論上這中配置不應該出現在實際的生產環境,因爲有時應用程序執行長事務,可能這種情況下,會被連接池誤回收,該種配置一般在程序測試階段,爲了定位連接泄漏的具體代碼位置,被開啓。

生產環境中連接的關閉應該靠程序自己保證。


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