java - Tomcat 7 频繁抛出 java.net.SocketException : Connection reset

标签 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。

谢谢

最佳答案

更多调查和 Wireshark 转储显示,除了实际负载之外,还显示了另外 2 个东西,一个是负载均衡器,它定期进行心跳检查,另一个是网络监控脚本,它再次进行频繁的 ping 操作。

因此,这些似乎是 ping 和中断连接的原因。因此,当我们监控再次位于 LB 之后的被动服务器时,它也会被网络监控脚本 ping 到,但没有生产负载。它也显示了我们在有负载的 Activity 服务器上看到的相同异常。这证实了上述观察结果。因此,我们可以忽略这些或更改监控脚本以等待服务器的响应。

关于java - Tomcat 7 频繁抛出 java.net.SocketException : Connection reset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26628161/

相关文章:

javascript - JavaFX8 WebEngine 的executeScript ("window")方法是否引用JavaScript窗口对象?

java - 有人可以解释一下这个逻辑中的条件是否是HashMap Put方法的内部实现吗

python - python 的 select() 与部分 recv() 在 SSL 套接字上的行为

java - 未加载 log4j2 配置

java - 将普通语言持续时间转换为 Joda 周期或 ISO 8601

java - 如何检查元素是否是可点击的按钮而不是文本?

python - 如何使用套接字获取网页使用python

c# - 异步套接字接收数据的顺序错误或丢失

java - Log4j LocationInfo Struts + Tomcat 缓慢

Tomcat:HTTP 持久连接是否使连接器线程忙碌?