2011-11-06 9 views
7

私の質問はとても簡単です。しかし、それは私がNode.jsので遊んでいると私は、マルチコアアーキテクチャでそれを使用する方法を考えています(私は推測)node.jsにいくつのchild_processをfork()する必要がありますか?

回答する別の変数が必要な場合があります。

最新バージョンは、マルチプロセスプログラミングのためchild_process.fork()child.spawn()方法を提供します。私はthisで大規模なCometサーバとしてNode.jsを使用することについての非常に良い(しかし日付)記事を読んだ。さて、nodejsはマルチプロセスプログラミングを提供しています。私は、サーバが1台のマシン上で稼働していると仮定して、多数の要求を処理するためにどれくらいのプロセスを起動する必要があるか分かりません。同じ仕事をしている子プロセスの「最良」(あるいは少なくとも良い)番号を選択する方法はありますか?

スタートガイドへのリンクは非常に高く評価されるだろう。

答えて

9

Node.jsの公式ドキュメントは、クラスタを使用する方法の例を持っていただきありがとうございます:

var cluster = require('cluster'); 
var http = require('http'); 
var numCPUs = require('os').cpus().length; 

if (cluster.isMaster) { 
    // Fork workers. 
    for (var i = 0; i < numCPUs; i++) { 
    cluster.fork(); 
    } 

    cluster.on('death', function(worker) { 
    console.log('worker ' + worker.pid + ' died'); 
    }); 
} else { 
    // Worker processes have a http server. 
    http.Server(function(req, res) { 
    res.writeHead(200); 
    res.end("hello world\n"); 
    }).listen(8000); 
} 

あなたは上記のコードで見ることができるように、あなたは数限り多くのフォークを使用する必要がありますすべてのコアが同時に動作するように(プロセッサのコア間で作業を分散させる) Node.jsの例では

+1

ありがとうございました:) この節はnodejs docにありません:) – ArtoAle

+0

問題はありません。http://nodejs.org/docs/v0.6.0/api/cluster.html – alessioalex

+0

はい私は今公式のAPIをより深く見ています! – ArtoAle

4

、彼らはそれぞれのコアは、単一のプロセスを実行したいです。コアあたりのワーカー数は技術的な制限がないため、システムが処理できる限り多くのワーカーを実行できます。

ただし、コアごとに複数のプロセスを実行すると、はアプリケーションのパフォーマンスを改善しません。

願っています!

+0

ノードは、別のコアで各フォークを実行します(最大コアまで)。 –

+0

例えば2つのコアがある場合、uは2つのフォークを持ち、各フォークには1つのノードappがあります。 –

関連する問題