在 Mac OS X 10.8 机器上,我有一个 Tomcat 7.0.40 服务器和一个客户端,它们都在本地运行。通过 3 次握手建立 TCP 连接,紧随其后的是来自服务器的 FIN、ACK 和 RST。客户端收到“来自服务器的文件结束”或“连接重置”。
TCP序列:
客户端 SYN
服务器 SYN, ACK
客户端 ACK
服务器 [TCP 窗口更新] ACK
服务器 FIN,ACK
客户端 ACK
服务器 [TCP Dup ACK] ACK
客户端 GET /myurl/...
服务器 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)