[node.js] cluster를 이용한 멀티코어(multi-core) 사용


셈플

var express = require("express" );
var http = require("http" );
var cluster = require("cluster" );
var os = require("os" );

if( cluster.isMaster){
 var cpu = os.cpus().length;

 for(var i=0; i<cpu; i++){
 cluster.fork();
 }

 cluster.on("exit" , function(worker, code, signal){
 //process가 종료 되었을경우 다시 시작
 console.log("worker : exit #%s %s", worker.id, signal);
 console.log("worker restarting ...");
 cluster.fork();
 });
 cluster.on("online" , function(worker){
 console.log("worker : online #%s, pid: %d", worker.id, 
 worker.process.pid);
 });
 cluster.on("listening", function(worker, address){
 console.log("worker : listening %s", worker.id);
 console.log(" address: %s, port: %d", address.address, address.port);
 });
}else{
 var app = express();
 var server = http.createServer(app);

 server.listen(8090, function(){
 console.log("server listening on worker id : #"+cluster.worker.id);
 }); 
}

실행결과

worker : online #1, pid: 32577
worker : online #2, pid: 32578
server listening on worker id : #1
worker : listening 1
address: 0.0.0.0, port: 8090
server listening on worker id : #2
worker : listening 2
address: 0.0.0.0, port: 8090

참고:

"JavaScript / Node.JS" 분류의 다른 글

[node.js] ajax로 타 도메인과 연동 문제 / CORS(Cross-Origin Resource Sharing) (0)2013/12/20
[node.js] traceback (0)2013/10/22
[node.js] log4js PatternLayout 사용하기 (0)2013/10/21
[node.js] Strict mode (0)2013/10/21


Powered by Textcube