2010-08-09 40 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