2010-08-09 58 views
3

我知道Comet长轮询对Web服务器不利,因为它们每个连接占用一个线程。所以你不能有很多持久连接的用户,否则你的web服务器会崩溃。Web套接字使用大量资源,如彗星长轮询?

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

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

回答

3

...因为他们占据了每个连接

一个线程这种假设是完全不符合事实。请参阅我给here以获取更多信息的答案。例如,完全可以在IIS中使用IAsyncHttpHandler执行长轮询,而不使用每个客户端的线程。

2

Spender是正确的,只有低级的Web服务器(例如,带有mpm_worker或mpm_prefork的Apache)使用每个连接的线程/进程。 (不久前我写过这样一个)智能Comet或Websockets网关将具有基于事件驱动的体系结构 - 基于Proactor(具有固定的线程池)或Reactor(单线程)模式。长轮询应该通过保持活动的HTTP连接完成(对于支持这种连接的浏览器 - 大约99%),在这种情况下,它将具有与Websockets相似的性能/可伸缩性特征。

+0

那么也许你可以回答我的下一个问题:http://stackoverflow.com/questions/3436808/how-does-nginx-handle-http-requests – 2010-08-09 01:54:56