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

Kar*_*uru 24 sockets linux network-programming client-server telnet

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

cle*_*tus 30

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

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

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

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

您可以通过为计算机提供其他IP地址来扩展此功能.每个IP地址是另一个64K地址的地址空间.


Mar*_*rkR 5

比您更在乎。更确切地说。

  • 超出您的代码实际处理能力(由于其他原因)
  • 比您的客户实际赚到的更多
  • 出于性能方面的考虑,您在一个盒子上处理的不止
  • 由于您的负载均衡器出于可用性的原因,会将它们分配到多个设备中,因此超出了您的需求

我可以保证它不仅是所有这些。大量套接字存在可扩展性限制,可以解决(Google针对c10k问题)。实际上,在Linux下,单个进程可能有用地使用了10,000多个套接字。如果每个服务器有多个进程,则可以再次增加该进程。

不必使用单个端口,因为如果需要,专用的负载均衡器将能够轮询多个端口。

如果您要为1000个客户进程中的10个运行数十个服务,那么保持服务正常运行就很重要,因此无论如何您都将需要多个服务器来实现冗余。因此,部署更多服务器不会有问题。