一、問題現(xiàn)象:
連接池中的鏈接空閑超過一定時(shí)間后,再次訪問數(shù)據(jù)庫時(shí)候出現(xiàn)如下異常:
com.mysql.jdbc.Communication***ception: Communications link failure due to underlying exception:
** BEGIN NESTED EXCEPTION **
java.net.SocketException
MESSAGE: Software caused connection abort: recv failed
......................................................
** END NESTED EXCEPTION **
Last packet sent to the server was 62 ms ago.
mysql wait_timeout默認(rèn)值為28800秒,即為8小時(shí)。也就是說默認(rèn)情況下,Mysql在經(jīng)過8小時(shí)(28800秒)不使用后會(huì)自動(dòng)關(guān)閉已打開的連接。
二、解決方法
因此可以修改mysql的wait_timeout解決問題,但是在不影響系統(tǒng)性能的情況下具體配置成多大不好確定。
因此考慮從tomcat連接池想法解決問題
在mysql5以前可以在鏈接字符串后面增加autoReconnect=true來解決該問題。
mysql5以后autoReconnect=true已經(jīng)不在起作用。
查詢dbcp資料發(fā)現(xiàn)如下配置項(xiàng)目
validationQuery
在連接返回給調(diào)用者前用于校驗(yàn)連接是否有效的SQL語句。如果指定了SQL語句,則必須為一個(gè)“SELECT”語句,且至少會(huì)返回一行結(jié)果。
因此在tomcat連接池中增加如下配置問題解決:
timeBetweenEvictionRunsMillis='8000'
minEvictableIdleTimeMillis='10000' />
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com