背景:
- C# .net同步Tcp服务器
- 通过使用 AcceptTcpClient 方法阻塞 TcpListener 来分配 TcpClient 对象
- 一旦有 TcpClient 对象,我将其传递给调用客户端的 GetStream 方法以创建 NetworkStream 的线程
- 这个 NetworkStream 被循环,在每次迭代中执行 networkStream.Read(someBuffer, 0, 4096)
- 现在客户端和服务器位于同一网络上,没有拥塞可言
- 我的服务器有足够的空闲内存
- 如果我将服务器软件加载到另一台计算机上,问题就会消失
- 踢球者:来自网络 Linux 盒子的流量顺利且准时地通过
我的服务器几个月来一直运行良好。然而,在过去的周末,进程开始的地方 ( tcpListener.AcceptTcpClient() ) 仅每隔几分钟发生一次,而不是快速连续地接收小组字节。所以我的服务器闲置,然后收到 30-50 个客户端请求,所有请求都捆绑到一个巨大的字节块中。不用说,这会导致巨大的延迟并对我的服务器造成压力。如果客户端请求量足够大,我的服务器可能需要 30 分钟才能赶上。
在我的客户端内置的日志记录中,我可以看到它们进行网络写入,并在每个写入之间进行刷新。所以客户端运行正常。
这带有某种系统干预的味道。我的 Tcp 服务器(如上所述)是否有问题,或者 Windows 中的某些内容干扰了我的流量,我如何判断?
多谢你们。
您可能需要在每个 Tcp 端点安装一些数据包捕获软件。你会感到惊讶的。我现在也遇到了类似的问题,实际上几乎完全相同。
当我安装捕获软件时,我注意到端点之间的流量按预期快速且准时。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)