2

特定のリクエストの投稿データを取得しようとすると、時々、1 秒未満のスパンで読み取りタイムアウトが発生します。これが起こることは私にとって非常に奇妙であり、誰かがこれを前に見たことがあるかどうか疑問に思っています. これは、公開されている実稼働 Web アプリケーションで発生しており、1 日に約 8 つのインスタンスがランダムに発生します (各インスタンスは 1 秒以下で、1 から 15 の読み取りタイムアウトが発生します)。スタック トレースの関連部分は次のとおりです。

Caused by: java.net.SocketTimeoutException: Read timed out
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(SocketInputStream.java:129)
    at org.apache.coyote.http11.InternalInputBuffer.fill(InternalInputBuffer.java:751)
    at org.apache.coyote.http11.InternalInputBuffer$InputStreamInputBuffer.doRead(InternalInputBuffer.java:781)
    at org.apache.coyote.http11.filters.IdentityInputFilter.doRead(IdentityInputFilter.java:116)
    at org.apache.coyote.http11.InternalInputBuffer.doRead(InternalInputBuffer.java:710)
    at org.apache.coyote.Request.doRead(Request.java:428)
    at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:304)
    at org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:403)
    at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:327)
    at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:162)
    at com.offers.util.OffersHttpServletRequest.popuplateReqBytes(OffersHttpServletRequest.java:117)
    at com.offers.util.OffersHttpServletRequest.getPostData(OffersHttpServletRequest.java:64)
    at com.util.TrackAction.getPostData(TrackAction.java:148)
    ... 40 more

--- この混乱はコメントで回答されています ---

OffersHttpServletRequest は、いくつかのメソッド (getPostData、getInputStream、isSecure、getReader、getRequestURL、getProtocol) をオーバーライドするクラスであることに注意してください。ただし、popuplateReqBytes は、オーバーライドされた getInputStream メソッドではなく、super.getInputStream() を呼び出します。そのため、スタック トレースが ServletRequestWrapper.getInputStream から OffersHttpServletRequest.getInputStream に戻る方法について少し混乱しています。

--- 混乱を終わらせる ---

- - アップデート - -

jtahlborn の観察に基づいて変更を行った後、スタック トレースを変更しました。変更しても問題は解決しませんでした。

4

0 に答える 0