在一个Windows Server 2008服务器中,我可以同时打开的HTTP连接最多有多少个?

7
我有一个托管HTTP聊天应用程序的Web服务器,使用长轮询(long-polling)工作。
这意味着客户端浏览器“轮询”新信息,并且服务器在没有信息发送回来之前不会响应,因此HTTP连接会保持打开状态长达一分钟。
我的问题是,在服务器死亡之前,它可以同时处理多少这样的连接。
当然,没有精确的数字,但我想要了解一个数量级(1,000,10,000,100,000?)。
如果您有任何相关经验的见解,都非常欢迎!
2个回答

1

1
说实话,在除了最极端的情况下,你的应用程序在超过支持连接数量之前就会耗尽资源。IIS可以处理大量的纯网络连接,但最终取决于你的应用程序是否能够快速处理这些数据。
如果你真的希望将其扩展到同时支持数千个用户,我建议你在设计中考虑到能够扩展到多个前端服务器。最有可能的情况是使用负载均衡器或反向代理来平衡这些HTTP连接,让前端服务器进行处理并与中央SQL数据库或其他存储机制通信。
另外一个注意点,关于单个服务器场景 - 无论IIS可以处理多少连接,你的防火墙也有其限制。通常也是非常多的,但如果你真的想找到上限,你也需要查看你的防火墙。

两个注释:大部分时间,我们的代码并没有做任何事情,它只是持有连接的句柄,以防需要通知的情况发生。当然,我并不是说它永远不会成为瓶颈,但如果是这样的话,我们可以继续使用更大的服务器,并且它确实是一段非常轻量级的代码。 - Daniel Magliola
关于分割服务器:是的,我们有这个想法,但它需要很多努力,我们现在更愿意用于构建功能。我们正在尝试弄清楚单个服务器方案能够持续多久。我们最终将不得不转移到多个服务器,但我们希望尽可能地延迟这一点。 - Daniel Magliola
话虽如此,我不指望我们的代码能够处理6.5万个连接。我原以为极限会低得多(5-10k),如果是这样,我们可能已经达到了极限。谢谢你的回答! - Daniel Magliola
2
@未来读者 - 根据我的经验,我们服务器中的网络卡是我们首先达到极限的地方,原来那些便宜的非服务器专用网卡最多只能支持1024个连接。通常这些信息并没有在文档中记录,有时候也可能是驱动程序的问题,但请记住,如果您的设置需要,您可能需要花费约100美元购买一张好的网卡。现在我们使用新的网卡已经可以支持超过2000个连接,并且仍然表现良好。 - eselk
65536 是一次可用端口的最大数量,因为一个端口是一个 16 位无符号数字。 - martinezdelariva
你在12年前回答了这个问题,现在世界可能已经发生了变化/你也积累了大量的经验。你是否有什么要补充到你的答案中呢? - Martin Thoma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接