我一直在调查一个问题,即我们有一个 UDP 服务器发送给多个客户端。服务器正在多播通道和端口上发送数据。客户端在同一台机器上运行,每个客户端都打开一个与其他客户端相同的端口的套接字。
我们错开客户的开始。当我们达到一定数量的客户端时,比如 10 个,我们开始看到丢包。我们已经使用各种监控工具消除了 NIC 问题,并且套接字缓冲区大小比消息大小大几倍。我们的发送间隔非常大(五秒),客户端对数据不做任何事情,因此消耗率不是一个因素。正如标题所说,我们已经在 Windows Server 2008 和 Linux 上重现了该问题(不确定版本)。
我们目前的理论是,第 10 个客户端在将所有这些数据复制到每个套接字的操作系统上施加了过多的负载。问题是我们每五秒只发送 500,000 个字节,这看起来一点也不多。
大多数情况下,我在这里发帖是希望有人看到类似的问题。我在搜索中被指向此修补程序,但它没有解决问题。任何用于调查处理网络流量的操作系统内部细节的资源将不胜感激。不幸的是,我缺乏这种领域的知识,而且很难找到关于这个主题的好的和详细的阅读材料。