Windows服务器上允许的打开TCP连接的理论最大数量是多少[关闭]
Posted
技术标签:
【中文标题】Windows服务器上允许的打开TCP连接的理论最大数量是多少[关闭]【英文标题】:What is the theoretical maximum number of open TCP connections allowed on a Windows server [closed] 【发布时间】:2016-04-14 22:24:59 【问题描述】:在我的 Windows 服务器上,我打开了一个端口,用于侦听来自多个客户端的传入 TCP 连接。可以在我的 Windows 服务器上打开的端口上同时建立套接字连接的唯一客户端的数量是否有限制?其中一个线程What is the theoretical maximum number of open TCP connections that a modern Linux box can have 谈到了套接字连接的数量受到 Unix 平台上允许的文件描述符的限制。最新可用的 Windows 服务器是否有这样的限制?如果是这样,如何更改该限制?
【问题讨论】:
您是否真的遇到了问题,或者只是出于好奇想是否可以更改这样的限制? 【参考方案1】:基于an answer by a MSFT employee:
取决于版本,Web 和 Foundation 版本有连接限制,而 Standard、Enterprise 和 Datacenter 则没有。
虽然正如 Harry 在另一个答案中提到的那样,有一个开放 TCP 连接的设置,其限制超过 16M。
虽然从技术上讲,您可能拥有大量连接,但存在限制数量的实际问题:
每个连接都由服务器地址和端口以及客户端地址和端口标识。理论上,即使两台机器之间可以建立的连接数量也非常大,但通常服务器使用单个端口,这限制了数量。同样很少有单个客户端会打开数千个连接,但在 NAT 情况下,它可能看起来像这样
服务器每秒只能处理一定数量的数据和数据包,因此高速数据传输或大量小数据包可能会导致数量下降
网络硬件可能无法处理所有传入的流量
服务器必须为每个连接分配内存,这再次限制了数量
服务器的作用也是一个重要问题。它是一个实时游戏服务器还是一个系统,在人们一次思考他们的行动 15 分钟之间提供国际象棋行动
【讨论】:
@HarryJohnston 但如果没有硬件信息和使用的软件,这是不可能的。问题还提到了 Linux 中的硬编码限制,这些限制在 Windows 中不存在。所以,是的,当然你不能指望一台带有单个 NIC 的慢速机器处理一百万个活动的 FTP 连接,但是一台大型机器可能会处理同样的事情,或者国际象棋服务器可以处理一万亿个连接。 实际上似乎有一个固定的限制(请参阅我的回答),但实际上您提出的要点更为重要。 感谢 Sami、Harry 提供的出色信息和见解。在我的例子中,有多个客户端每个都启动一个连接并在发送周期性数据时保持连接。这基本上是来自现场的一些传感器数据(例如温度)。因此,可以有多个客户端同时与服务器上的同一端口通信。似乎网络硬件可能不是连接限制内存,而是更多限制。我们将很快开始一些压力测试。【参考方案2】:除了 Sami 的回答中概述的许可和实际限制之外,实际上对同时打开的连接数有一个可配置的限制,由 TcpNumConnections 设置决定。默认值也是最大值,接近 16M。
(链接的文档适用于 Windows 2003。Windows Server 更高版本的相应文档似乎不存在。但是,我找不到任何表明该设置已被删除的信息。)
然而,在实践中,您很可能早在遇到此问题之前就遇到了 Sami 的回答中概述的实际问题。 (当然,除非系统管理员手动更改了设置。)
【讨论】:
是的,我找不到任何信息表明这仍然不是允许的最大值,即使也没有明确的迹象表明它是真的。但我也会支持它的存在,因为至少提到了 WS 2008。以上是关于Windows服务器上允许的打开TCP连接的理论最大数量是多少[关闭]的主要内容,如果未能解决你的问题,请参考以下文章