我在 生产环境 设置中遇到以下异常 . 以下是痕迹,
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),然后将其运行完成 . 这里没有错误 .
-
在服务器代码中设置断点 . 从客户端代码命中,它在服务器断点处停止,然后我停止/关闭客户端并让服务器代码运行完成,这也没有导致任何错误 .
关于如何在本地重现此问题的任何想法 .
谢谢,
玉萍