1. 程式人生 > >Communications link failure

Communications link failure

兩個 lur 發現 idle style mem lec 針對 .cn

針對數據庫Communications link failure的錯誤,可以理解為有兩種策略解決:
策略1(推薦):
數據池配置 <property name="minEvictableIdleTimeMillis" value="28800" />屬性,和數據庫變量wait_timeout一致。
策略2:
數據池配置
<!-- testWhileIdle會定時校驗numTestsPerEvictionRun個連接,只要發現連接失效,就將其移除再重新創建-->
<property name= "testWhileIdle" value="true" />
<!-- 從池中取連接的時候,發現當前連接失效,再創建一個連接供當前查詢使用-->
<property name= "testOnBorrow" value="false" />
<!-- 連接在return給pool時,是否提前進行validate操作-->
<property name= "testOnReturn" value="false" />
<!-- 測試連接是否有效的sql-->
<property name= "validationQuery" value="select 1" />
<!-- 檢查連接池中空閑的連接的頻率:毫秒-->
<property name= "timeBetweenEvictionRunsMillis" value="30000" />
<!-- 每次檢查空閑連接的個數-->
<property name= "numTestsPerEvictionRun" value="30" />
一套屬性,定期檢查連接,發現無效的則關閉。

策略3:

修改MySQL的參數,wait_timeout最大為31536000即1年,在my.cnf中加入:

[mysqld]

wait_timeout=31536000(1年)259200(3天:個人推薦)

interactive_timeout=31536000

重啟生效,需要同時修改這兩個參數。

!!!需要重啟


Communications link failure