本番環境で次の例外が発生しています。以下、跡ですが、
原因: java.net.SocketException: 接続のリセット
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 の構成の詳細です。
- コネクタ - バイオ
- 最大スレッド - 100
- 受け入れ数 - 20000
私がウェブに遭遇した最も一般的なケースは、サーバーが応答する前にクライアントが接続を閉じていることです。ただし、ここではそうではないようです。なぜこれが起こっているのか理解したいだけです。運が悪かったので、最後にこれを再現しようとしました。
いくつかのことはすでに試しましたが、
- サーバーコードにブレークポイントを設定し、クライアントからヒットし、1 分 (> 20000) 待ってから、完了するまで実行しました。ここにエラーはありません。
- サーバー コードにブレーク ポイントを設定します。クライアントコードからヒットし、サーバーブレークポイントで停止し、クライアントを停止/閉じてサーバーコードを最後まで実行しましたが、これもエラーにはなりませんでした。
この問題をローカルで再現する方法についてのアイデア。
ありがとう、
ヴィッキー