我想設置4個不同的node.js實例,每個實例都在自己的核心上。 node.js是否將新實例堆疊在同一個核心上,還是將它們設置在新核心上?不同核心上的node.js的多個實例
這些實例是不相關的並單獨接收請求。我希望CPU負載均勻分佈。 我一直無法找到這個問題的明確答案。
我想設置4個不同的node.js實例,每個實例都在自己的核心上。 node.js是否將新實例堆疊在同一個核心上,還是將它們設置在新核心上?不同核心上的node.js的多個實例
這些實例是不相關的並單獨接收請求。我希望CPU負載均勻分佈。 我一直無法找到這個問題的明確答案。
一般來說,系統會嘗試這樣做,以最大限度地利用cpu。但是,如果你想瞄準一個特定的CPU,你應該檢查出TaskSet。它設定了過程的親和力。
此外還有幾個有用的問題討論同一主題。看一看。
還有一個模塊,Cluster,其也可以是用於CPU利用率非常有用的。它讓你分叉多個進程分配負載到多個核心。
UPDATE
最後,我已經部署根據OP類似的東西。
案例1.
病例2
我還建議你只是嘗試一些提到的解決方案,並在每種情況下繼續監視你的系統;如CPU,內存使用情況和io。最後,從您的測試中,您將看到針對您的用例的最佳解決方案。每個應用程序都有自己的要求,所以最好能夠嘗試找到你的應用程序真正需要的東西。
試試這個:
var cluster = require('cluster')
, numCPUs = require('os').cpus().length;
if(cluster.isMaster) {
// Fork workers.
for (var i = 0; i < numCPUs; i++) {
cluster.fork();
}
cluster.on('exit', function(worker, code, signal) {
console.log('worker ' + worker.pid + ' died');
});
return;
}
完整代碼here
也看here
你有沒有讀過這個問題,它不問如何在nodejs中執行多線程,它詢問如何在不同的核心上運行不同的節點進程實例。那麼使用集羣有用嗎? –
這是來自nodejs api文檔的引用「羣集模塊允許您輕鬆創建一個全部共享服務器端口的進程網絡。」你想通過同一個端口訪問所有進程嗎? (http://nodejs.org/api/cluster.html#cluster_cluster) – pl47ypus
首先集羣模塊是在http://nodejs.org/api/cluster.html#cluster_cluster doc開頭明確提及的實驗性第二件事情「一個節點的單個實例運行在一個單獨的線程中,爲了利用多核系統,用戶有時需要啓動一個Node進程集羣來處理負載」因此,請確實讀取事情「,它對於啓動多個相同過程的實例來平衡負載「 –
你能請添加要實現的方案的一些細節? –
@VivekBajpai我有4個nodejs服務器永遠運行,在高峯時間每個人都可能會經歷沉重的負載,我認爲讓他們每個人都設置到自己的核心將有助於在高峯時間。 – GameDevGuru
您是否在像EC2或專用真實服務器這樣的虛擬服務器中運行它? –