最近在用一個MySQL的Java連接池的過程中,連接一晚上不釋放,第二天就會造成超時的錯誤,查了一下原因,原來是因爲MySQL默認的空閒等待時間是8個小時,一旦空閒超過8個小時,就會拋出異常。異常文本如下:
com.mysql.jdbc.CommunicationsException
MESSAGE: Communications link failure due to underlying exception:
** BEGIN NESTED EXCEPTION **
java.net.SocketException
MESSAGE: Software caused connection abort: socket write error
解決方式:編輯/etc/my.cnf(windows下爲my.ini),將超時時間設置爲10年,在[mysqld]後面加入:
wait_timeout=315360000
然後重啓MySQL
# service mysql restart
搞定。然後重啓超時的java連接池程序吧。