【问题标题】:Server closes TCP connection via FIN, ACK and RST immediatelly after establishing it服务器建立后立即通过 FIN、ACK 和 RST 关闭 TCP 连接
【发布时间】:2013-08-11 03:47:51
【问题描述】:

在 Mac OS X 10.8 机器上,我有一个 Tomcat 7.0.40 服务器和一个客户端,它们都在本地运行。通过 3 次握手建立 TCP 连接,紧随其后的是来自服务器的 FIN、ACK 和 RST。客户端收到“来自服务器的文件结束”或“连接重置”。

TCP 序列:

客户端同步
服务器 SYN, ACK
客户端确认

服务器 [TCP 窗口更新] ACK
服务器 FIN、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)

【问题讨论】:

  • 我对tomcat不熟悉,但是你有更详细的跟踪日志吗?

标签: java macos tomcat tcp


【解决方案1】:

您要么违反了配置的访问规则,例如 IP 地址黑名单,要么向其发送了它不理解的内容。

【讨论】:

  • 同一应用程序在同一台 Mac 上使用 JDK 6 运行良好。我怀疑问题可能是由于 JDK 1.7.0_25 造成的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-11
  • 1970-01-01
  • 2011-04-21
  • 2013-04-19
  • 1970-01-01
相关资源
最近更新 更多