Windows 服务器上允许打开的 TCP 连接的理论最大数量是多少

What is the theoretical maximum number of open TCP connections allowed on a Windows server

在我的 Windows 服务器上,我打开了一个端口,用于侦听来自多个客户端的传入 TCP 连接。可以在我的 Windows 服务器上打开的端口上同时建立套接字连接的唯一客户端的数量是否有限制?其中一个线程 What is the theoretical maximum number of open TCP connections that a modern Linux box can have 讨论了 Unix 平台上允许的文件描述符限制套接字连接的数量。最新可用的 Windows 服务器有这样的限制吗?如果是,如何更改该限制?

基于an answer by a MSFT employee

It depends on the edition, Web and Foundation editions have connection limits while Standard, Enterprise, and Datacenter do not.

尽管正如 Harry 在另一个答案中提到的那样,有一个打开 TCP 连接的设置限制超过 16M。

但是虽然从技术上讲您可以拥有大量连接,但存在限制数量的实际问题:

  • 每个连接都由服务器地址和端口以及客户端地址和端口标识。从理论上讲,即使两台机器之间可以拥有的连接数也非常大,但通常服务器使用单个端口来限制数量。也很少有单个客户端会打开数千个连接,但在 NAT 情况下它可能看起来像

  • 服务器每秒只能处理一定数量的数据和数据包,因此高速数据传输或大量小数据包可能会导致数量下降

  • 网络硬件可能无法处理所有传入的流量

  • 服务器必须为每个连接分配内存,这再次限制了数量

  • 服务器做什么也是一个重要问题。它是一个实时游戏服务器还是一个系统,在人们之间一次思考他们的棋步 15 分钟

除了 Sami 的回答中概述的许可和实际限制外,实际上还有一个可配置的同时打开连接数限制,由 TcpNumConnections 设置决定。默认值也是最大值,略低于16M

(链接文档适用于 Windows 2003。Windows Server 更高版本的相应文档似乎不存在。但是,我找不到任何建议设置已被删除。)

然而,在实践中,您很可能 运行 在您点击此之前很久就进入 Sami 的回答中概述的实际问题。 (当然,除非系统管理员手动更改了设置。)