我想在
Windows Server 2008上运行的服务器中尽可能多地建立连接(来自许多不同客户端的单个连接),以支持Comet风格的应用程序.该应用程序是用C#编写的.连接不会很健谈,只需要打开(并保持打开状态).购买大量内存和快速cpu不是问题.
据我所知,我将限制为每个NIC 65k同时打开连接 – 最大端口数.这准确吗?或者我可以以某种方式超越65k连接/ NIC?似乎Linux的服务器产品至少支持数十万个连接.他们如何做到这一点?
你可以超过65k连接;因为每个端口可以有多个连接(一旦接受,侦听器就可以连接到另一个客户端).一端或另一端必须有一些区别,通常客户端选择一个随机端口. Windows默认限制为这些随机端口中的3000多个;所以你的典型客户将最大限度地利用它.但是,可以以不同的方式配置客户端,并且许多* nix仅限于Windows.
有一个注册表设置将最大连接数限制为1600万.但是还有其他更实际的问题通常会限制你更少(你可以改变注册表值).
> Windows每个连接占用大约1KB的RAM(16M连接大约为16GB);并且您的应用还必须以某种方式跟踪它的活动连接(更多内存).> Windows还将检查2小时内的无响应连接.在16M连接处,大约每0.5ms;只需进行这些检查就会占用大量带宽.