Web套接字使用了很多资源,比如彗星长轮询?

时间:2010-08-09 01:04:26

标签: http comet websocket

我知道Comet长轮询对Web服务器不利,因为它们每个连接占用一个线程。因此,您不能让很多用户拥有持久连接,否则您的Web服务器将崩溃。

HTML 5中的网络套接字是否相同?

如果每个持久连接占用一个线程,这怎么能解决资源问题呢?

2 个答案:

答案 0 :(得分:3)

  

...因为它们每个连接占用一个线程

这种假设完全是不真实的。有关详细信息,请参阅我给出的答案here。 (例如)完全有可能在IIS中使用IAsyncHttpHandler来执行长轮询,而不是每个客户端使用一个线程。

答案 1 :(得分:2)

Spender是正确的,只有糟糕的Web服务器(例如带有mpm_worker或mpm_prefork的Apache)每个连接使用一个线程/进程。

智能Comet或Websockets网关(我不久前写过这样的网关)将具有事件驱动架构 - 基于Proactor(具有固定的线程池)或Reactor(单线程)模式。应该通过保持活动的HTTP连接进行长轮询(对于支持它的浏览器 - 大约99%),在这种情况下,它将具有与Websockets类似的性能/可伸缩性特征。