DBCP testOnBorrow()

最近在使用 Apache DBCP connection pool 時,發現過了一段很長的時間,MySQL 資料庫的連線就會中斷,導致在使用 SQL Query 時,發現查詢發生錯誤。

檢查的結果是 MySQL 的 wait_timeout 參數,預設值是 8 小時,過了 8 小時沒有 sql query,MySQL server 會自動中斷資料庫的連線,但是在 connection pool 這裡,卻不知道 connection 已經中斷,所以在使用這一個 connection 時,會發生錯誤。

目前的解決方法是使用 BasicDataSource 類別提供的 testOnBorrow(),配合設定 validationQuery() 為 SELECT 1,在每次取得 DataSource 時,就會先進行測試,確定資料庫的連線沒有問題之後,才會讓 Application 取得 DataSource。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

你正使用 WordPress.com 帳號留言。 登出 / 變更 )

Twitter picture

你正使用 Twitter 帳號留言。 登出 / 變更 )

Facebook照片

你正使用 Facebook 帳號留言。 登出 / 變更 )

Google+ photo

你正使用 Google+ 帳號留言。 登出 / 變更 )

連結到 %s

%d 位部落客按了讚: