java.net.SocketException:錯誤日誌解決方案

一、錯誤日誌:

程序運行正常,控制檯偶爾出現如下錯誤:

Caused by: java.net.SocketException: Software caused connection abort: socket write error
	at java.net.SocketOutputStream.socketWrite0(Native Method)
	at java.net.SocketOutputStream.socketWrite(Unknown Source)
	at java.net.SocketOutputStream.write(Unknown Source)
	at java.io.BufferedOutputStream.flushBuffer(Unknown Source)
	at java.io.BufferedOutputStream.flush(Unknown Source)
	at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3832)
	... 19 more

或者

Caused by: java.net.SocketException: Software caused connection abort: recv failed
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(Unknown Source)
at com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:113)
at com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:160)
at com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:188)
at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1953)

二、錯誤原因:

MySQL默認的空閒等待時間是8個小時(8 x 60 x 60 = 28800),也就是28800秒,一旦空閒超過8個小時,就會拋出異常。將MySQL默認的空閒等待時間設置爲80小時,就沒問題了。

三、解決方案:

1.查看數據庫interactive_timeout、wait_timeout兩個屬性的值:

show global variables like "interactive_timeout";
show global variables like "wait_timeout";

或打開my.ini查看兩個屬性的值,看是否是默認值8小時,即28800(s)

2.打開Mysql的安裝路徑,找到文件my.ini修改如下屬性。

wait_timeout=288000
interactive_timeout=288000

3.重啓mysql服務。

重啓mysql服務後,執行步驟1操作,看interactive_timeout、wait_timeout兩個屬性的值是否改好了。

4.重啓eclipse或tomcat,進行驗證。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章