最大 TCP 连接数
Maximum number of TCP connections
我正在做一个TCP客户端-服务器模拟。在模拟中,我创建了 2 个客户端和 2 个服务器。而且我已经编程,读取请求将发送到服务器 1,写入请求将发送到服务器 2。因此,客户端将始终更新它的套接字并与服务器建立新连接。
但是,当客户端与服务器建立了66561次连接后,它不再发送请求数据包,而是简单地发送一些空的ACK数据包。
我预计两个客户端最多可以发送数百万个请求,但目前两个客户端最多只能发送 13k 个请求。谁能给我提示或建议?
听起来大多数以前创建的连接仍在占用资源(未从系统中释放)。根据您提供的信息,
但是,当客户端与服务器建立了66561次连接后,它不再发送请求数据包,而是简单地发送一些空的ACK数据包。
似乎释放了大约 1000 多个连接。可能是因为 2msl 时间到了。如果是这种情况,建议您在创建新连接之前明确释放一个连接。
复制并粘贴您的 C/S 零件代码将有助于分析。
解决方案:
- 不要在你的应用协议中使用小包
- 在两侧使用套接字选项TCP_NODELAY client/server
我正在做一个TCP客户端-服务器模拟。在模拟中,我创建了 2 个客户端和 2 个服务器。而且我已经编程,读取请求将发送到服务器 1,写入请求将发送到服务器 2。因此,客户端将始终更新它的套接字并与服务器建立新连接。
但是,当客户端与服务器建立了66561次连接后,它不再发送请求数据包,而是简单地发送一些空的ACK数据包。
我预计两个客户端最多可以发送数百万个请求,但目前两个客户端最多只能发送 13k 个请求。谁能给我提示或建议?
听起来大多数以前创建的连接仍在占用资源(未从系统中释放)。根据您提供的信息,
但是,当客户端与服务器建立了66561次连接后,它不再发送请求数据包,而是简单地发送一些空的ACK数据包。
似乎释放了大约 1000 多个连接。可能是因为 2msl 时间到了。如果是这种情况,建议您在创建新连接之前明确释放一个连接。
复制并粘贴您的 C/S 零件代码将有助于分析。
解决方案:
- 不要在你的应用协议中使用小包
- 在两侧使用套接字选项TCP_NODELAY client/server