我知道Comet长轮询对Web服务器不好,因为它们占用每个连接一个线程。所以你不能有很多用户有持久的连接,否则你的web服务器就会崩溃。
这与HTML5中的web套接字一样吗?
如果每个持久连接也占用一个线程,这又如何解决资源问题呢?
发布于 2010-08-09 09:10:13
...because每个连接占用一个线程
这个假设是完全不正确的。有关更多信息,请参阅我给here的答案。例如,在IIS中使用IAsyncHttpHandler来执行长轮询是完全可能的,而不需要每个客户端使用一个线程。
发布于 2010-08-09 09:31:09
Spender是正确的,只有差劲的web服务器(例如,带有mpm_worker或mpm_prefork的Apache )在每个连接上使用线程/进程。
智能Comet或Websockets网关(我不久前写了这样一个)将具有事件驱动的体系结构-要么基于Proactor (具有固定的线程池)模式,要么基于Reactor (单线程)模式。长轮询应该在保持活动的HTTP连接上完成(对于支持它的浏览器-大约99% ),在这种情况下,它将具有与Websockets相似的性能/可伸缩性特征。
https://stackoverflow.com/questions/3436752
复制相似问题