为了支持Comet风格的应用程序,我想在Windows Server 2008上运行的服务器上尽可能多的连接(来自许多不同客户端的单个连接)。 该应用程序是用C#编写的。 连接不会喋喋不休,他们只需要打开(并保持打开状态)。 购买内存和快速CPU不是一个问题。
据我所知,我将被限制为每个网卡65k的同时打开连接数 – 最大端口数。 这是准确的吗? 或者我能以某种方式超越65k连接/ NIC吗? 似乎有Linux的服务器产品,至less支持成千上万的连接。 他们如何做到这一点?
你可以远远超过65k连接; 因为每个端口可以有多个连接(一旦接受,监听器可以连接到另一个客户端)。 一端或另一端必须有一些区别,通常客户端会随机select一个端口。 Windows默认限制在这些随机端口的3000多个; 所以你的典型的客户端会在最大程度上绕过。 然而,可以对客户端进行不同的configuration,许多* nix仅限于Windows。
有一个registry设置限制连接的最大数量为1600万。 但是,还有其他更实际的问题,通常会限制你less(可以更改registry值)。