Mac OS X 10.8 マシンに、Tomcat 7.0.40 サーバーとクライアントがあり、どちらもローカルで実行されています。3 ウェイ ハンドシェイクを介して TCP 接続が確立され、その後すぐにサーバーからの FIN、ACK、および RST が続きます。クライアントは「サーバーからのファイルの終わり」または「接続のリセット」を受け取ります。
TCP シーケンス:
クライアント SYN
サーバー SYN、ACK
クライアント ACK
server [TCP Window Update] ACK
server FIN, ACK
client ACK
server [TCP Dup ACK] ACK
client GET /myurl/...
server RST
詳細
- クライアントとサーバーの両方がローカルで実行されます
- 最初の GET 要求が失敗します。次のリクエストは成功します。
- ファイアウォールがオンになっていません
- maxfiles はすでに増加していますが、無駄です
サーバーがソケットを閉じる原因は何ですか? ヒントやアイデアを高く評価します。
編集: Tomcat のログには、次のスタック トレースがあります。
FINE: HTTP 要求ヘッダーの解析中にエラーが発生しました java.net.SocketException: 引数が無効です java.net.SocketInputStream.socketRead0 (ネイティブ メソッド) で java.net.SocketInputStream.read(SocketInputStream.java:150) で java.net.SocketInputStream.read(SocketInputStream.java:121) で org.apache.coyote.http11.InternalInputBuffer.fill(InternalInputBuffer.java:516)で org.apache.coyote.http11.InternalInputBuffer.fill(InternalInputBuffer.java:501)で org.apache.coyote.http11.InternalInputBuffer.parseRequestLine(InternalInputBuffer.java:98) で org.apache.coyote.http11.AbstractHttp11Processor.process (AbstractHttp11Processor.java:928) で org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) で org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) で java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1145) で java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) で java.lang.Thread.run(Thread.java:724) で
と
2013 年 8 月 14 日午後 5:15:17 org.apache.coyote.http11.AbstractHttp11Processor プロセス FINE: HTTP 要求ヘッダーの解析中にエラーが発生しました java.io.EOFException: ソケットで予期しない EOF が読み取られました org.apache.coyote.http11.Http11Processor.setRequestLineReadTimeout (Http11Processor.java:174) で org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:926) で org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) で org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) で java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1145) で java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) で java.lang.Thread.run(Thread.java:724) で