【问题标题】:Windows server 2008 send [RST, ACK] packets while several clients ask for tcp connections at the same time(less than 5ms)Windows server 2008 在多个客户端同时请求 tcp 连接时发送 [RST, ACK] 数据包(少于 5 毫秒)
【发布时间】:2016-01-28 08:49:28
【问题描述】:

我有一个在 Windows Server 2008 上运行的 Java Socket Server

当使用多线程客户端同时发送多个TCP连接时,客户端建立后总是报“Errno 111 connection denied”错误第一次连接。

这是 Wireshark 的捕获轨迹(10.1.3.136 是服务器,10.34.10.132 是客户端):Trace,具体的红色轨迹在这里:Trace2

那么,有什么问题吗?

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

【问题讨论】:

    标签: sockets tcp


    【解决方案1】:

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

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

    【讨论】:

    • 我发现ServerSocket的'backlog'配置是1....更改它,它可以工作。那么如果积压满了,像windows这样的服务器主机会选择重置连接,而不是服务器应用?
    猜你喜欢
    • 1970-01-01
    • 2014-04-27
    • 2020-04-24
    • 2021-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-04
    • 2021-02-26
    相关资源
    最近更新 更多