1. 程式人生 > >dbcp連線池八小時失效配置(testQuery/validationQuery)

dbcp連線池八小時失效配置(testQuery/validationQuery)

公司的專案最近上線,專案使用了spingboot,老大們總是提微服務這個概念,於是學習了一番,我自己啟動了一個專案作為後臺服務組成部分編碼完成以後將專案部署到了伺服器上,每次在測試的時候測沒有出現問題,但是等專案部署到伺服器上以後,問題來了。


困擾了一段時間,一般出現這個錯誤的情況是:開啟app停留在即將請求伺服器中我負責的部分,切換到後臺等到很長時間以後重新發起請求就會出現這個問題。影響使用者體驗,排查了幾天也沒有排查出來,昨天在檢視tomcat自帶日誌的時候檢視到出現了錯


後面百度關鍵字設定了autoreconnect=true

才知道mysql的機制,當一旦連線閒置超過八小時後,mysql會自動斷開連線,要重啟tomcat

下面是一些相關連線

http://gcq04552015.iteye.com/blog/1696915mysql八小時的設定

http://kabuchino.iteye.com/blog/1140323關於mysql的八小時解釋

當我檢視原生代碼的時候。發現程式碼在初始化配置的環境的時候就是已經設定了這些屬性


順著這條線查詢,百度和問了一下老大,可能是使用了連線池以後經過一段時間,連線失效了,所以設定如下屬性

<!-- testOnBorrow true 指明是否在從池中取出連線前進行檢驗,如果檢驗失敗,則從池中去除連線並嘗試取出另一個. -->
		<property name="testOnBorrow">
			<value>true</value>
		</property>
		<!-- 該選項用來驗證資料庫連線的有效性 -->
		<property name="validationQuery">
			<value>SELECT 1 </value>
		</property>
昨天特意打開了app,然後等今天早上開啟以後就沒有出現了問題。。。。註釋也一併貼在了程式碼中