-1

これは、公式ドキュメントの簡単な例です。

$ node test-node.js 

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

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

  cluster.on('exit', function(worker, code, signal) {
    console.log('worker ' + worker.process.pid + ' died');
  });
} else {
  // Workers can share any TCP connection
  // In this case its a HTTP server
  http.createServer(function(req, res) {
    res.writeHead(200);
    res.end("hello world\n");
  }).listen(8000);
}

これは私がhtopで見るものです: hトップ

2 つのマスター プロセスと 2 つのフォークされたプロセスがあります。

なんで?私は2つのプロセスだけを持つべきだと思いました!


アップデート:

ここでは、VM CentOS で実行しています: セントス http://i.stack.imgur.com/GQiiN.png

多分私はそれを理解していませんか?

4

2 に答える 2

0

を実行する小さなノード サーバーを作成しましたexec。exec は新しいプロセスを生成します (新しいスレッドではなく、ノードはスレッドを使用しません)。プロセスは次のとおりです。

ps -ef | grep 32038
me  32038 15776  0 08:54 pts/7    00:00:00 node index.js
me  32116 32038  1 08:55 pts/7    00:00:00 find /home/me -name *.js

http.createServer私は github を調べましたが、ざっと見ただけでは、新しいプロセスがフォークまたは生成されることはわかりませんでした。clusterAPI を使用しており、2 つの CPU または 2 つのコアを備えた 1 つの CPU が必要なため、2 つのプロセスを持つことは理にかなっています。


上記のコードを実行したところ、コアが 4 つあるため、4 つのプロセスが得られます。

ps -ef | grep node
me   1822 15776  0 09:02 pts/7    00:00:00 node server.js
me   1827  1822  0 09:02 pts/7    00:00:00 /opt/node-v0.10.0-linux-x64/bin/node /home/me/workspace/node6proc2/server.js
me   1828  1822  0 09:02 pts/7    00:00:00 /opt/node-v0.10.0-linux-x64/bin/node /home/me/workspace/node6proc2/server.js
me   1830  1822  0 09:02 pts/7    00:00:00 /opt/node-v0.10.0-linux-x64/bin/node /home/me/workspace/node6proc2/server.js
于 2013-04-10T13:01:35.310 に答える