2010-04-17 226 views
1

客戶端發出2個併發請求。 (其中1個需要60秒 - 長輪詢),另一個不長輪詢 - 應該立即返回。當我沒有進行長時間投票時,它會馬上返回。但是一旦我開始對另一個線程進行長時間輪詢,另一個線程就會永遠執行。當長時間輪詢時,爲什麼我的其他請求需要這麼長時間?

Firebug顯示請求正在等待10-50秒。在服務器上,我從php腳本開始的那一刻開始分析所有請求,直到它返回到客戶端,並且它顯示每個請求只需要300ms或更少。

這個問題始於我開始做長輪詢(與其他XHR請求)的同一時間。我爲這兩個請求使用jquery。

服務器顯示它處於非常輕的負載下。 CPU和內存少於2%。 8個進程在15個池中運行(即使我運行更多的ajax請求,它似乎也沒有偏離8號)。我猜每個進程可以同時運行多個ajax線程。

我確保在完成執行後立即從所有進程中退出。如果在prstat -J下列出仍有7個未使用的進程,我看不到進程池是如何用完的。此外,問題也會間歇性地發生。 Firefox應該能夠處理2個併發的Ajax請求。我沒有得到什麼問題。

+0

我想在提出編程問題時看到你的代碼比看不到它要好:) – XGreen 2010-04-17 12:47:17

+0

如果你在setTimeout(longpoll,100)中運行你的長輪詢會發生什麼? – mVChr 2011-01-20 03:46:58

回答

1

我有同樣的問題與Firefox和兩個jsonp請求,一個長輪詢。問題是,jsonp基本上只是腳本標籤,獲取JavaScript和Firefox加載動態插入的腳本同步。

這就是爲什麼長輪詢請求必須在第二個請求開始載入之前完成。

如果您的情況不是jsonp,我無法提供任何幫助。

相關問題