Throwable occurred: org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 50,123,505 milliseconds ago. The last packet sent successfully to the server was 50,123,505 milliseconds ago. is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.
榪欎富瑕佹槸鐢變袱涓師鍥犲紩璧鋒潵鐨?
1.mysql 浼?xì)鑷姩鍏抽棴闀挎棄櫁翠笉鐢ㄧ殑connection,涓涓繛鎺ュ鏋滃浜巗leep鐘舵佽揪鍒癿ysql鐨勫弬鏁皐ait_timeout鎸囧畾鐨勬椂闂?榛樿涓?灝忔椂),灝辨槸鑷姩鍏抽棴榪欎釜榪炴帴
2.common pool涓病鏈夋寚瀹氱浉搴旂殑榪炴帴媯(gè)鏌ュ弬鏁?br />
瑙e喅鍔炴硶:浠巆ommon pool鐨勯厤緗弬鏁版潵瑙e喅:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName">
<value>${db.driver}</value>
</property>
<property name="url">
<value>${db.url}</value>
</property>
<property name="username">
<value>${db.user}</value>
</property>
<property name="password">
<value>${db.password}</value>
</property>
<property name="maxActive">
<value>100</value>
</property>
<property name="maxIdle">
<value>50</value>
</property>
<property name="maxWait">
<value>10000</value>
</property>
<property name="timeBetweenEvictionRunsMillis">
<value>3600000</value><!--1 hours-->
</property>
<!--
<property name="minEvictableIdleTimeMillis">
<value>20000</value>
</property>
-->
<property name="testWhileIdle">
<value>true</value>
</property>
<property name="validationQuery">
<value>select 1 from dual</value>
</property>
</bean>
浣跨敤涓婅堪鐨勪笁涓孩鑹茬殑鍙傛暟,灝卞彲浠ラ伩鍏嶈繖涓棶棰?榪欎笁涓弬鏁扮殑鎰忎箟:
timeBetweenEvictionRunsMillis:鍚姩connection鏍¢獙瀹氭椂鍣?瀹氭椂鍣ㄨ繍琛屾椂闂撮棿闅斿氨鏄痶imeBetweenEvictionRunsMillis鐨勫?榛樿涓?1,琛ㄧず涓嶅惎鍔ㄥ畾鏃跺櫒,榪欓噷璁懼畾涓?灝忔椂,鍙灝忎簬mysql鐨剋ait_timeout灝卞彲浠ヤ簡(jiǎn)
testWhileIdle: true,琛ㄧず媯(gè)鏌dle鐨刢onnection,false涓轟笉媯(gè)鏌?br />
validationQuery:鐢ㄤ簬媯(gè)鏌onnection鐨剆ql璇彞.
榪欏彧鏄竴縐嶆柟娉?鍙﹀鐨勫嚑縐嶆柟娉?
timeBetweenEvictionRunsMillis+minEvictableIdleTimeMillis:榪欑鏂瑰紡涓嶆鏌onnection鐨勬湁鏁堟?鑰屾槸媯(gè)鏌ヨ繛鎺ョ殑絀洪棽鏃墮棿,澶т簬minEvictableIdleTimeMillis灝辨竻闄?
<property name="timeBetweenEvictionRunsMillis">
<value>3600000</value><!--1 hours-->
</property>
<property name="minEvictableIdleTimeMillis">
<value>120000</value><!--connection鐨勭┖闂叉椂闂村ぇ浜庤繖涓?灝辯洿鎺ヨ鍏抽棴,騫朵粠榪炴帴姹犱腑鍒犻櫎-->
</property>
濡傛灉涓嶅枩嬈㈢敤瀹氭椂鍣?涔熷彲浠ラ厤緗畉estOnBorrow+validationQuery鍙傛暟:姣忔浠庤繛鎺ユ睜鍙栧弬鏁伴兘浼?xì)鏍¢獙杩炴帴鐨勬湁鏁堟?瀹為檯涓婅繖縐嶆柟寮忔ц兘浼?xì)姣斿畾鏃跺櫒宸?
<property name="testOnBorrow">
<value>true</value>
</property>
<property name="validationQuery">
<value>select 1 from dual</value>
</property>
鍙﹀,涔熷彲浠ョ敤testOnReturn+validationQuery,涓嶈繃鏈繀浼?xì)瑙e喅闂?榪欒〃紺烘瘡嬈′嬌鐢ㄥ畬榪炴帴,褰掕繕榪炴帴姹犵殑鏃跺欐鏌ヨ繛鎺ョ殑鏈夋晥鎬?榪欐湁鍙兘瀵艱嚧浣跨敤涓嬈℃棤鏁堢殑榪炴帴,鏈濂戒笉瑕佺敤.
涓婇潰鐨勫嚑縐嶆柟娉曞彲浠ュ悎騫朵嬌鐢?鍙槸媯(gè)鏌ョ殑鐐瑰浜?鏈繀鏄ソ浜?br />
鍙﹀,涔熷彲浠ヤ嬌鐢ˋbandoned鐨勯偅鍑犱釜鍙傛暟,鏉ュ垹闄よ繛鎺ユ睜涓殑榪炴帴.涔熻兘杈懼埌鏁堟灉.鎴戞病嫻嬭瘯.

]]>