2016-09-09 41 views
0

我已經搜索了每個核心可以初始化多少個集羣,並且我讀到的所有文章都悲傷地表示每個核心一個節點足夠好。因此,我還沒有找到一個很好的解釋。每個核心可以初始化多少個Node.js應用程序集羣?

我有一個應用程序,它使用大量的I/O並且只做很少的計算,例如從隊列中推入/刪除,然後將任務安排到數據庫。對於這個應用程序,我已經爲每個核心初始化了5個集羣,並且增加了可以接收的請求數量。然而,服務器的平均負載非常高,有時大約爲30。

要點是,使用這種方法的副作用是什麼(每個核心有多個節點)?

+0

你對「每個核心有5個集羣」有什麼意義?經驗法則是每個內核有一個工作進程(因此如果您有4個內核,則啓動4個工作進程)。 – robertklep

+0

我的意思是每個核心有5個工作進程。我認爲你明白了「拇指的作用」,但爲什麼?我已經開始在有4個核心的機器上處理20名工人。 –

+0

對於除服務器啓動以外的任何其他I/O,您是否使用異步I/O?或者你有一些同步I/O撒入你的代碼/ – jfriend00

回答

0

單個核心一次只能運行一個進程。

大多數在您的計算機上運行的進程大多處於空閒狀態(它們坐在一旁等待發生的事情),這就是您可以在計算機上運行數十或數百個進程而沒有太多問題的方式。

但是,處於活動狀態的進程會執行很多操作(如進程執行的操作;在這種情況下,還有很多I/O也會計數),請保持CPU內核非常繁忙。因此,爲每個內核啓動多個此類進程是沒有用的,因爲它們都將爭奪該內核的時間片。

這也是爲什麼你會得到一個較高的平均負載,這是多少進程要麼使用的CPU,或者是等待使用CPU的指示。

相關問題