最大 TCP 连接数

Maximum number of TCP connections

我正在做一个TCP客户端-服务器模拟。在模拟中,我创建了 2 个客户端和 2 个服务器。而且我已经编程,读取请求将发送到服务器 1,写入请求将发送到服务器 2。因此,客户端将始终更新它的套接字并与服务器建立新连接。

但是,当客户端与服务器建立了66561次连接后,它不再发送请求数据包,而是简单地发送一些空的ACK数据包。

我预计两个客户端最多可以发送数百万个请求,但目前两个客户端最多只能发送 13k 个请求。谁能给我提示或建议?

听起来大多数以前创建的连接仍在占用资源(未从系统中释放)。根据您提供的信息,

但是,当客户端与服务器建立了66561次连接后,它不再发送请求数据包,而是简单地发送一些空的ACK数据包。

似乎释放了大约 1000 多个连接。可能是因为 2msl 时间到了。如果是这种情况,建议您在创建新连接之前明确释放一个连接。

复制并粘贴您的 C/S 零件代码将有助于分析。

Nagle's algorithm

解决方案:

  • 不要在你的应用协议中使用小包
  • 在两侧使用套接字选项TCP_NODELAY client/server