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

12 windows-server-2008 tcpip

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

据我所知,每个 NIC 将被限制为 65k 同时打开的连接 - 最大端口数。这是准确的吗?或者我可以以某种方式超过 65k 连接/网卡吗?似乎至少有适用于 Linux 的服务器产品支持数十万个连接。他们怎么做到的?

Chr*_*s S 10

您可以远远超过 65k 连接;因为每个端口可以有多个连接(一旦接受,侦听器可以连接到另一个客户端)。一端或另一端确实必须有一些区别,通常客户端选择一个随机端口。默认情况下,Windows 仅限于这些随机端口中的 3000 多个;所以你的典型客户会最大限度地利用这一点。但是,可以以不同的方式配置客户端,并且许多 *nix 仅限于比 Windows 多得多的功能。

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

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