Windows Server 2008 中可以拥有的最大 TCP 连接数是多少?

Windows Server 2008 中可以拥有的最大 TCP 连接数是多少?

我希望在运行 Windows Server 2008 的服务器上拥有尽可能多的连接(来自许多不同客户端的单个连接),以便支持 Comet 风格的应用程序。该应用程序是用 C# 编写的。连接不会很繁琐,它们只需要打开(并保持打开状态)。购买大量内存和快速 CPU 不是问题。

据我所知,每个 NIC 最多只能同时打开 65k 个连接 - 这是端口的最大数量。这是准确的吗?或者我能以某种方式超过 65k 个连接/NIC?似乎至少有一些 Linux 服务器产品支持数十万个连接。他们是如何做到这一点的?

答案1

您可以远远超过 65k 个连接;因为每个端口可以有多个连接(一旦接受,侦听器就可以连接到另一个客户端)。一端或另一端确实必须有一些差异,通常客户端会选择一个随机端口。默认情况下,Windows 限制为 3000 多个这样的随机端口;因此您的典型客户端将达到最大值。但是,可以以不同的方式配置客户端,并且许多 *nix 的限制比 Windows 多得多。

注册表设置将最大连接数限制为 1600 万。但还有其他更实际的问题通常会将连接数限制在更少的范围内(您可以更改注册表值)。

  • Windows 每个连接占用大约 1KB 的 RAM(对于 16M 个连接,大约需要 16GB);并且您的应用还必须以某种方式跟踪它的活动连接(更多内存)。
  • Windows 还会每 2 小时检查一次无响应的连接。在 16M 连接的情况下,大约每 0.5 毫秒检查一次;仅进行这些检查就会占用大量带宽。

相关内容