我想在Windows Server 2008上运行的服务器中尽可能多地拥有连接(来自许多不同客户端的单个连接),以便支持Comet样式的应用程序。该应用程序用C#编写。连接不会是闲聊的,它们只需要打开(并保持打开状态)即可。购买大量的内存和快速的CPU并不是问题。
据我所知,每个NIC最多只能同时进行65k个同时打开的连接-最大端口数。这个准确吗?还是可以以某种方式超越65k连接/ NIC?似乎有些Linux服务器产品至少支持数十万个连接。他们如何做到这一点?
我想在Windows Server 2008上运行的服务器中尽可能多地拥有连接(来自许多不同客户端的单个连接),以便支持Comet样式的应用程序。该应用程序用C#编写。连接不会是闲聊的,它们只需要打开(并保持打开状态)即可。购买大量的内存和快速的CPU并不是问题。
据我所知,每个NIC最多只能同时进行65k个同时打开的连接-最大端口数。这个准确吗?还是可以以某种方式超越65k连接/ NIC?似乎有些Linux服务器产品至少支持数十万个连接。他们如何做到这一点?
Answers:
您可以超越65k的连接数;因为每个端口可以有多个连接(一旦接受,侦听器就可以连接到另一个客户端)。一端或另一端确实必须有所不同,通常客户端会选择一个随机端口。默认情况下,Windows限制为这些随机端口中的3000多个;因此您的典型客户将在此范围内发挥最大作用。但是可以对客户端进行不同的配置,并且许多* nix的限制仅限于Windows。
有一个注册表设置将最大连接数限制为1600万。但是,还有其他一些更实际的问题通常会限制您的工作量(可以更改注册表值)。