2013-04-12 105 views
3

我在this示例中創建了一個Node.js集羣。節點集羣:爲什麼只有一個工作人員處理所有請求?

而且我已將console.log(cluster.worker.id)放入我的API調用中以確定哪​​個工作人員正在接受請求。

所有員工都已成功啓動(我有4個內核,所以我創建了4個工人),但請求總是由一名工人處理。

有誰知道爲什麼會發生這種情況?我使用Windows 7操作系統,並具有版本0.8.8版本的節點。

+1

您是對服務器進行壓力測試還是僅僅觸發偶爾的測試請求?對於後者,可能是因爲該工作人員是第一個可以處理請求的人。 – robertklep

+1

我做了一個測試案例:http://runnable.com/UWgB78ufwudHAAKx雖然它有時粘性,它確實是旋轉的。 – generalhenry

+0

我正在對它進行壓力測試。我發現它始終是創建接受請求的服務器的最後一個工作者。是否因爲窗戶? ...我真的沒有任何更多的想法... –

回答

3

由於Cluster認識到它不處於高負載狀態,並且不打擾交換工作人員,所以您沒有看到任何工作人員的切換。當進程處於高負載狀態時,羣集將自動進行負載平衡。這裏的文檔是這麼說:

當多個進程都accept()荷蘭國際集團相同的底層 資源,操作系統負載均衡,在它們之間非常 有效。 Node.js中或程序中沒有路由邏輯,工作人員之間沒有共享狀態。因此, 設計您的程序非常重要,因爲它不會過度依賴 內存中的數據對象來處理會話和登錄等內容。

+0

我能夠看到這在行動。我設置了一個斷點來「抓住」似乎在捕捉所有負載的工人。我提出的下一個要求有一個不同的工作人員。 – Khan

相關問題