1

本番環境で次の例外が発生しています。以下、跡ですが、

原因: 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 の構成の詳細です。

  1. コネクタ - バイオ
  2. 最大スレッド - 100
  3. 受け入れ数 - 20000

私がウェブに遭遇した最も一般的なケースは、サーバーが応答する前にクライアントが接続を閉じていることです。ただし、ここではそうではないようです。なぜこれが起こっているのか理解したいだけです。運が悪かったので、最後にこれを再現しようとしました。

いくつかのことはすでに試しましたが、

  1. サーバーコードにブレークポイントを設定し、クライアントからヒットし、1 分 (> 20000) 待ってから、完了するまで実行しました。ここにエラーはありません。
  2. サーバー コードにブレーク ポイントを設定します。クライアントコードからヒットし、サーバーブレークポイントで停止し、クライアントを停止/閉じてサーバーコードを最後まで実行しましたが、これもエラーにはなりませんでした。

この問題をローカルで再現する方法についてのアイデア。

ありがとう、

ヴィッキー

4

0 に答える 0