目前在由 2 个传感器(每个传感器的数据速率为 1Khz)组成的系统中遇到网络问题,通过以太网链路与 Windows 7 操作系统通信。windows系统上运行的程序是用Java编写的。
问题:程序在未定义的时间段内正常运行,然后由于 TCP 本地缓冲区溢出而停止。
我的直觉让我相信这是由于 TCP RWIN——消费者从堆栈中接收数据包的速度太慢,最终导致缓冲区溢出。
查看从 NIC 捕获的数据包,崩溃前的最终序列总是如下所示:一个大的 ACK 块,然后是每个传感器的 RST,然后关闭连接。我们可以看到,在每个 RST 上,WIM 大小设置为 200,而之前它超过 1000。
任何人都可以就如何开始解决这个问题提供一些建议吗?在这一点上所做的所有研究中,我仍然不知道如何解决这个问题。