Mysql的wait_timeout解決
問題:
www.2cto.com
ssh+mysql項目,數據源為dbcp,隔夜後訪問會出現下列錯誤
1
Could not open Hibernate Session for transaction; nested exception is org.hibernate.TransactionException: JDBC begin failed:
2
...
原因:
mysql存在一項屬性“wait_timeout”,默認值為28800秒(8小時),
通過下面口令可以查看
1
mysql> show global variables like 'wait_timeout';
其意思為mysql的一個connection空閒時間超過8小時,mysql會自動斷開該連接。
由於dbcp沒有檢驗該connection是否有效,所以用其進行數據操作便會出現異常。
解決方法:
www.2cto.com
修改dbcp配置:
1
timeBetweenEvictionRunsMillis = 20000
2
minEvictableIdleTimeMillis = 28700
“timeBetweenEvictionRunsMillis ” dbcp每2000秒進行一次connection的檢驗,
“minEvictableIdleTimeMillis ” 每次檢驗中將超過28700秒處於空閒的connection斷開