Carpe Diem

  Top > スポンサー広告> Node.js > Node で Cluster モジュールを使う  

スポンサーサイト

-- - --/-- [--] - --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Node で Cluster モジュールを使う

2013 - 09/25 [Wed] - 09:29

Clusterモジュールを使うと簡単にクラスタを実装できます。
導入すると何が良いの? → マルチコア環境で処理能力があがります。

というわけで実装します。どういう仕組みかは「Cluster」を参照してください。

まずは実験環境を導入します。Nodeがインストールされている環境で以下のようにしてください。


$ mkdir cluster-test
$ cd cluster-test
$ npm install cluster

実験用のserver.jsを作成します。

$ emacs -nw server.js


var cluster = require('cluster');
var http = require('http');

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

if (cluster.isMaster) {
for (var i=0; i < numCPUs; i++) {
// if master, then fork
var worker = cluster.fork();
}

cluster.on('listening', function(worker) {
console.log('worker is listening. pid: ' + worker.process.pid);
});

cluster.on('exit', function(worker) {
console.log('worker is killed. pid: ' + worker.process.pid);
});
} else {
http.Server(function(req, res) {
res.writeHead(200);
res.end('Hello');
}).listen(3000);
console.log('server start: http://localhost:3000');
}

// if not this event, processes are alive
process.on('SIGINT', function() {
if (cluster.isMaster) {
console.log('master stopped. pid: ' + process.pid);
} else {
console.log('worker stopped. pid: ' + process.pid);
}
process.exit(0);
});


これで

$ node server.js

とするとCPUの分だけ子プロセスが起動します。
Ctrl-cすると 'SIGINT' のイベントでプロセスが終了しますし、
kill すると 'exit' イベントでプロセスが終了します。


ソース:
Cluster
node.js v0.8.1のClusterモジュールを試す
CPUを最大限活かそう。Nodeでclusterを使ってみる

コメントの投稿





管理者にだけ表示を許可する

 | ホーム | 

プロフィール

Cicatrice

Author:Cicatrice
備忘録

検索フォーム

カテゴリ

最新記事

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。