如何解決tomcat中的應用報java.io.IOException: 您的主機中的軟件中止了一個已建立的連接。


這兩天突然看到日志文件中有“java.io.IOException: 您的主機中的軟件中止了一個已建立的連接。”錯誤,所以特地查了下原因。

org.apache.catalina.connector.ClientAbortException: java.io.IOException: 您的主機中的軟件中止了一個已建立的連接。
at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:396) ~[catalina.jar:8.0.35]
at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:426) ~[tomcat-util.jar:8.0.35]
at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:339) ~[tomcat-util.jar:8.0.35]
at org.apache.catalina.connector.OutputBuffer.writeBytes
(OutputBuffer.java:421) ~[catalina.jar:8.0.35]
at org.apache.catalina.connector.OutputBuffer.write
(OutputBuffer.java:409) ~[catalina.jar:8.0.35]
at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:97) ~[catalina.jar:8.0.35]
at com.fasterxml.jackson.core.json.UTF8JsonGenerator._flushBuffer(UTF8JsonGenerator.java:1819) ~[jackson-core-2.1.0.jar:2.1.0]
at com.fasterxml.jackson.core.json.UTF8JsonGenerator.writeString(UTF8JsonGenerator.java:436) ~[jackson-core-2.1.0.jar:2.1.0]
at com.fasterxml.jackson.databind.ser.std.StringSerializer.serialize(StringSerializer.java:38) ~[jackson-databind-2.1.0.jar:2.1.0]
at

在tomcat中出現這個錯誤是由於客戶端在發送請求后,還沒等服務器響應就斷開了連接,有可能是因為網絡原因,突然網斷了,但是如果錯誤頻繁出現的話,可能就是服務端的問題了。

tomcat中配置了一個連接超時時間connectionTimeout,如果在這個時間之后客戶端還未得到服務器端的響應的話,就會主動斷開連接,這樣就會出現上述異常了,tomcat中默認的連接超時時間是20秒,我們一般最好設置為60秒,從而避免后台程序處理時間長導致連接斷開。

設置方法
進入tomcat中conf目錄,打開server.xml文件,找到配置端口的地方

<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />

connectionTimeout就是鏈接超時時間,單位是毫秒,默認就是20秒。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM