2020年6月11日 星期四

[java]java.sql.SQLException: I/O Error: Connection reset by peer: socket write error

java.sql.SQLException: I/O Error: Connection reset by peer: socket write error
at net.sourceforge.jtds.jdbc.TdsCore.executeSQL(TdsCore.java:1065)
at net.sourceforge.jtds.jdbc.TdsCore.microsoftPrepare(TdsCore.java:1191)
at net.sourceforge.jtds.jdbc.ConnectionJDBC2.prepareSQL(ConnectionJDBC2.java:693)
at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.executeQuery(JtdsPreparedStatement.java:978)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:93)

主要原因還是在 Tomcat 的 connection pool 與 DB Server 斷線所引起。
重啟server即可

tomcat相關設定
maxWait="3000"  從池中取連線的最大等待時間,單位ms.
initialSize="10"  初始化連線
maxIdle="60"  最大空閒連線
minIdle="10"  最小空閒連線
maxActive="80"  最大活動連線
validationQuery = "SELECT 1"  驗證使用的SQL語句  
testWhileIdle = "true"  指明連線是否被空閒連接回收器(如果有)進行檢驗.如果檢測失敗,則連線將被從池中去除
testOnBorrow = "false"  借出連線時不要測試,否則很影響效能
timeBetweenEvictionRunsMillis = "30000"  每30秒執行一次空閒連接回收器
minEvictableIdleTimeMillis = "1800000"  池中的連線空閒30分鐘後被回收
numTestsPerEvictionRun="10"  在每次空閒連接回收器執行緒(如果有)執行時檢查的連線數量

removeAbandoned="true"  連線洩漏回收引數,當可用連線數少於3個時才執行  
removeAbandonedTimeout="200"  連線洩漏回收參數,200秒,洩露的連線可以被刪除的超時值。當連線時間大於200秒,不等資料庫回應就砍連線。
removeAbandonedTimeout        屬性是設定資料庫連線被釋最多空閒時間多少秒之後設定為空閒。預設移除廢棄連線的時間為300秒。





沒有留言:

張貼留言

^