Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 服务器单个端口(套接字)上的最大并发连接数_Linux_Sockets_Network Programming_Client Server_Telnet - Fatal编程技术网

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

Linux 服务器单个端口(套接字)上的最大并发连接数,linux,sockets,network-programming,client-server,telnet,Linux,Sockets,Network Programming,Client Server,Telnet,可以在同一端口(单个套接字)上与服务器通信的并发客户端(使用不同的端口号)的最大数量是多少?哪些因素会影响此计数?我正在Linux环境下的w.r.t telnet中查找此信息。这部分取决于您的操作系统 但是,对特定端口没有限制。然而,并发连接的数量是有限制的,通常受到内核支持的文件描述符数量的限制(例如2048) 需要记住的是,TCP连接是唯一的,而连接是一对端点(本地和远程IP地址和端口),因此,如果1000个连接连接到服务器上的同一端口,这并不重要,因为连接仍然是唯一的,因为另一端是不同的

可以在同一端口(单个套接字)上与服务器通信的并发客户端(使用不同的端口号)的最大数量是多少?哪些因素会影响此计数?我正在Linux环境下的w.r.t telnet中查找此信息。

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

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

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

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


您可以通过为机器提供额外的IP地址来扩展此功能。每个IP地址是另一个64K地址的地址空间。

比您关心的更多。或者更确切地说

  • 超出您的代码实际可以处理的范围(出于其他原因)
  • 比你的客户实际赚的还多
  • 由于性能原因,您无法在单个框上处理更多内容
  • 由于负载平衡器出于可用性的原因会将它们分布在多个机箱中,所以单个机箱上的负载比您需要的要多
我可以保证,这比所有这些都重要。大量套接字存在可伸缩性限制,这是可以解决的(Google解决c10k问题)。实际上,在Linux下,单个进程可以有效地使用10000多个套接字。如果每台服务器有多个进程,可以再次增加

不必使用单个端口,因为专用负载平衡器可以在需要时循环使用多个端口


如果您要为1000个客户端进程中的许多10个运行一个服务,那么它保持工作状态可能是相当重要的,因此无论如何,您都需要几个服务器来进行重新一致性。因此,部署更多服务器不会有问题

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

另一件要提及的是客户端临时端口的范围。继续搜索时,我在下面的链接w.r.t BSD中找到了一些关于kern.maxfiles的好点,因为每个打开的文件、套接字、,或者fifo使用一个文件描述符,而大型生产服务器可能很容易需要数千个文件描述符,这取决于并发运行的服务的种类和数量-快速链接不起作用吗?我认为,这在这里也起着重要作用。因此,文件描述符似乎是决定Linux服务器中特定端口上并发连接数的主要因素之一。下面的链接似乎传达了增加Linux中文件描述符最大数量的方法-出于性能原因,TCP/UDP缓冲区大小是另一个不容忽视的因素。有趣的是,负载平衡器将执行服务器端口的循环!人们可以在单个系统(Linux)上轻松使用数十万(如果可用)套接字。肯定是所有的。您所做的假设是不正确的。环回连接有其自身的局限性。首先,客户机的操作系统通常只使用特定范围内的临时端口(因此,只创建给定数量的端口)。另一方面,到127.0.0.1(环回地址)的连接通常会对所有连接使用相同的源地址(即127.0.0.1)。为了克服这些限制,您必须将本地端显式绑定到不同的地址