mysql配置當中有個配置項wait_timeout,他控制的是如果乙個連線超過指定時間沒有活動,mysql服務端將單方面斷開連線,如果客戶端還保留這個連線,這個連線將不可用,導致客戶端報錯等異常出現,這個值預設等於28800,單位是秒,也就是8個小時。要解決這個問題,有人將配置的值修改到很大,個人不建議這麼做,應該修改客戶端連線池的配置引數,因為我們必須保證服務端的效能和資源,該**的就應該**,這裡以c3p0連線池為例,
方案1是maxidletime的值設定為小於wait_timeout即可,maxidletime配置具備**連線的能力,
方案2是
cpool.preferredtestquery='select 1'
cpool.idleconnectiontestperiod=600,單位秒,每600秒檢測連線池中所有連線,並銷毀空閒連線
也可以同時使用方案1和方案2。
mysql 8小時問題
假設你的資料庫是mysql,如果資料來源配置不當,將可能發生經典的 8小時問題 原因是mysql在預設情況下,如果發現乙個連線的空閒時間超過8小時,將會在資料庫端自動關閉這個連線。而資料來源並不知道這個連線已經關閉了,當它將這個無用的連線返回給某個dao時,dao就會報無法獲取connection異...
解決mysql 8小時空閒後連線超時的問題
當應用程式和資料庫建立連線時,如果超過了8個小時,應用程式句不會去訪問資料庫,資料庫就會出現斷掉連線的現象 這時再次訪問就會丟擲異常.一般的解決方法大多是在資料庫連線字串中增加 autoreconnect true 選項。但是這只對mysql4以前的版本有效。在最新的mysql中是無效的。其實要解決...
nutz mysql8小時 MySQL8小時問題
一 問題 獲取mysql連線,8小時內無請求自動斷開連線。二 解決 2.1 分析 mysql伺服器預設的 wait timeout 是28800秒即8小時,意味著如果乙個連線的空閒時間超過8小時,mysql將自動斷開連線,而連線池卻認為該連線還是有效的,當應用申請使用該連線時,就會導致報錯 2.2 ...