Tomcat 7频繁抛出java.net.SocketException:连接重置

时间:2014-10-29 10:36:59

标签: java sockets tomcat socketexception connection-reset

我正在使用Tomcat 7并且频繁出现连接重置错误,

org.apache.coyote.http11.Http11Processor - Error parsing HTTP request header

java.net.SocketException: Connection reset
    at java.net.SocketInputStream.read(SocketInputStream.java:189)
    at java.net.SocketInputStream.read(SocketInputStream.java:121)
    at org.apache.coyote.http11.InternalInputBuffer.fill(InternalInputBuffer.java:516)
    at org.apache.coyote.http11.InternalInputBuffer.fill(InternalInputBuffer.java:501)
    at org.apache.coyote.http11.InternalInputBuffer.parseRequestLine(InternalInputBuffer.java:98)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:931)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:722)

有时,虽然不经常"套接字读取意外的EOF",

org.apache.coyote.http11.Http11Processor - Error parsing HTTP request header

java.io.EOFException: Unexpected EOF read on the socket
    at org.apache.coyote.http11.InternalInputBuffer.parseRequestLine(InternalInputBuffer.java:99)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:931)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:722)

根据我的阅读,两者似乎都表明客户端可能突然关闭了连接,而服务器正在读取它,导致重置和/或EOF。

是否有任何人可以想到或遇到的其他原因。此外,如果两个例外都来自同一个问题,频率如何变化,我得到大约100个连接重置,比如说5个EOF&#39。

由于

1 个答案:

答案 0 :(得分:2)

更多的调查和Wireshark转储显示,除了实际负载之外,还有2个其他内容,一个是负载平衡器,它执行常规心跳检查,另一个是网络监控脚本,它再次频繁ping。

所以这些似乎是ping和打破连接的人。因此,当我们监控一个再次落后于LB的被动服务器时,它也会受到网络监控脚本的限制,但没有生产负载。它也显示了我们在带有负载的活动服务器上看到的相同异常。这证实了上述观察结果。因此,我们可以忽略这些或更改监视脚本以等待来自服务器的响应。