服务器的单个端口(套接字)上的最大并发连接数

并发客户端(使用不同的端口号)的最大数量可以在同一端口(单个套接字)上与服务器通信的最大数量是多less? 什么是可能影响这个计数的因素? 我正在Linux环境中寻找这个信息和telnet。

这部分取决于您的操作系统。

然而对特定端口没有限制。 然而,并发连接的数量是有限的,通常受内核支持的文件描述符数量的限制(如2048)。

需要记住的是,TCP连接是唯一的,连接是一对端点(本地和远程IP地址和端口),所以1000个连接连接到服务器上的同一端口并不重要,因为连接是所有仍然是独特的,因为另一端是不同的。

另一个值得注意的限制是一台机器只能做大约64K的出站连接或内核连接的限制,以较低者为准。 这是因为端口是无符号的16位数字(0-65535),每个出站连接使用其中一个端口。

你可以通过给机器额外的IP地址来扩展这个。 每个IP地址是另一个64K地址的地址空间。

比你关心的还要多。 更确切地说。

  • 除了你的代码实际上可以处理(由于其他原因)
  • 不仅仅是你的客户真的会做
  • 由于性能原因,您可以处理一个盒子
  • 不止如此,你需要在一个盒子上,因为无论如何,你的负载均衡器将分布在几个之间

我可以保证它不仅仅是这些。 有大量的套接字可扩展性的限制,可以解决(谷歌的C10K问题)。 在实践中,在Linux下一个进程有可能使用超过10,000个套接字。 如果每台服务器有多个进程,则可以再次增加进程。

没有必要使用单个端口,因为如果需要的话,您的专用负载均衡器将能够循环多个端口。

如果您正在为数千个客户端进程运行一个服务,那么它可能保持正常运行可能相当重要,因此您将需要几台服务器来进行冗余。 因此,您将不会遇到部署更多服务器的问题。

我在Windows上做了一个测试,在一个套接字上做了多个环回连接。 Windows在16372标记之后拒绝分配任何东西。