Windows Server 2008 发送 [RST, ACK] 数据包,同时多个客户端同时请求 TCP 连接(小于



我有一个在Windows Server 2008上运行的Java套接字服务器

使用多线程客户端同时发送多个 TCP 连接时,客户端在建立第一个连接后总是收到"Errno 111 连接被拒绝"错误。

以下是 Wireshark 的捕获跟踪(10.1.3.136 是服务器,10.34.10.132 是客户端):跟踪和特定的红色跟踪如下所示:Trace2

那么,问题出在哪里呢?

如果我延迟启动线程超过 5 毫秒,或者使用 centos 作为服务器,错误就会消失。在服务器跟踪文件中找不到异常。

问题是您已填满积压工作队列,因此 Windows 开始向进一步传入的连接请求发出重置。

这可能是因为您指定了一个较小的积压值,但更可能的原因是您的服务器根本没有足够快地接受连接:您的接受循环正在忙于做其他事情,例如 DNS 调用甚至客户端的 I/O,所有这些都应该在客户端的线程中完成。接受循环应该做的只是接受套接字并启动线程。

最新更新