基於 MySQL的Web網站在一段時間後會經常處於無法響應的狀態,或者響應非常慢,這是由於數據庫連接自動關閉了。
在MySQL Command Line Client中執行show variables like '%timeout%'
中我們可以看到有兩個變量wait_timeout和interactive-timeout,它們的默認值都為28800秒,即為8小時。
也就是說默認情況下,Mysql在經過8小時(28800秒)不使用後會自動關閉已打開的連接。
www.2cto.com
1.為了解決這個問題,對於MySQL5之前的版本,如Mysql4.x,只需要修改連接池配置中的URL,添加一個參數:autoReconnect=true,
如果是MySQL5及以後的版本,則需要修改my.cnf(或者my.ini)文件,在[mysqld]後面添加上:
wait_timeout = n
interactive-timeout = n
n為服務器關閉交互式連接前等待活動的秒數。
www.2cto.com
2. ruguoc3p0 連接池解決方法
<property name="testConnectionOnCheckout" value="false"/>
<property name="testConnectionOnCheckin" value="false"/>
當屬性為true 時可以解決。因性能消耗大請只在需要的時候使用它。如果設為true那麼在每個connection提交的時候都將校驗其有效性。建議使用 idleConnectionTestPeriod或automaticTestTable 等方法來提升連接測試的性能
<property name="idleConnectionTestPeriod" value="60"/> 隔多少秒檢查所有連接池中的空閒連接,默認為0表示不檢查;
<property name="automaticTestTable" value="c3p0_connection_testtable" />
chaunceyhao