java.net.SocketException:使用Tomcat重置连接

我在 生产环境 设置中遇到以下异常 . 以下是痕迹,

Caused by: 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:532)
    at org.apache.coyote.http11.InternalInputBuffer.fill(InternalInputBuffer.java:501)
    at org.apache.coyote.http11.InternalInputBuffer$InputStreamInputBuffer.doRead(InternalInputBuffer.java:563)
    at org.apache.coyote.http11.filters.IdentityInputFilter.doRead(IdentityInputFilter.java:124)
    at org.apache.coyote.http11.AbstractInputBuffer.doRead(AbstractInputBuffer.java:346)
    at org.apache.coyote.Request.doRead(Request.java:422)
    at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:290)
    at org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:431)
    at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:315)
    at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:200)
    at java.nio.channels.Channels$ReadableByteChannelImpl.read(Channels.java:385)

以下是tomcat的配置详细信息 .

  • 连接器 - BIO

  • 最大线程数 - 100

  • 接受计数 - 20000

我遇到的最常见的情况是客户端在服务器响应之前关闭连接 . 然而,这似乎并非如此 . 我只想试着理解为什么会这样 . 我试着在没有太多运气的情况下重现这一点 .

几件事已经尝试过,

  • 在服务器代码中设置一个断点,从客户端命中,等待一分钟(> 20000),然后将其运行完成 . 这里没有错误 .

  • 在服务器代码中设置断点 . 从客户端代码命中,它在服务器断点处停止,然后我停止/关闭客户端并让服务器代码运行完成,这也没有导致任何错误 .

关于如何在本地重现此问题的任何想法 .

谢谢,

玉萍

回答(0)