2

在 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)
4

1 回答 1

0

您必须要么违反配置的访问规则,例如 IP 地址黑名单,要么向它发送它不理解的东西。

于 2013-08-09T08:38:49.490 回答