客戶端發出2個併發請求。 (其中1個需要60秒 - 長輪詢),另一個不長輪詢 - 應該立即返回。當我沒有進行長時間投票時,它會馬上返回。但是一旦我開始對另一個線程進行長時間輪詢,另一個線程就會永遠執行。當長時間輪詢時,爲什麼我的其他請求需要這麼長時間?
Firebug顯示請求正在等待10-50秒。在服務器上,我從php腳本開始的那一刻開始分析所有請求,直到它返回到客戶端,並且它顯示每個請求只需要300ms或更少。
這個問題始於我開始做長輪詢(與其他XHR請求)的同一時間。我爲這兩個請求使用jquery。
服務器顯示它處於非常輕的負載下。 CPU和內存少於2%。 8個進程在15個池中運行(即使我運行更多的ajax請求,它似乎也沒有偏離8號)。我猜每個進程可以同時運行多個ajax線程。
我確保在完成執行後立即從所有進程中退出。如果在prstat -J下列出仍有7個未使用的進程,我看不到進程池是如何用完的。此外,問題也會間歇性地發生。 Firefox應該能夠處理2個併發的Ajax請求。我沒有得到什麼問題。
我想在提出編程問題時看到你的代碼比看不到它要好:) – XGreen 2010-04-17 12:47:17
如果你在setTimeout(longpoll,100)中運行你的長輪詢會發生什麼? – mVChr 2011-01-20 03:46:58