nodejs + express + cluster 사용하기
- 꼬반
- 2015. 5. 13. 12:09
====== nodejs + express + cluster 사용하기 ======
nodejs version : v0.10.26
express version : v4.0.0
앞서서 express 가 버전업이 많이 되면서 과거와 다르게 express 만 전역으로 설치해서는 자동으로
프로젝트를 생성해주지 않는다. express-generation 을 설치해야만 이전과 같이 자동으로 프로젝트를 생성할 수 있다.
<code>
$ npm install express-generation -g
</code>
이렇게 설치하고 자동으로 프로젝트를 생성하게 되면 이전 버전과는 실행방법에 약간 차이가 발생한다.
이전버전의 경우는 아래처럼 실행을 했다면
<code>
$ node app.js
</code>
4. 버전에서는
<code>
$ npm start
</code>
위와 같이 실행하여 준다. 그러면 bin 폴더내의 www 파일이 실행되어 지는데 살펴보면 기존 버전에서 server를 listen 하는
부분이 실행부분으로 분리가 되고 기존 app.js 는 export.module 로 사용되어지는 것 뿐. 방식은 동일하다.
이를 유의하여 cluster 를 적용하면 아래와 같이 된다. 아래 내용은 www 파일을 수정하여 적용한 것이다.
#!/usr/bin/env node위와 같이 작성하여 실행하여 보면 cpu core 갯수만큼 worker 가 생성되어 지는 것을 확인할 수 있다.
var cluster = require('cluster');
var numCPUs = require('os').cpus().length;
var debug = require('debug')('my-application');
var app = require('../app');
if(cluster.isMaster) { for(var i=0;icluster.fork();
}
cluster.on('exit', function(worker, code, signal) {
console.log('worker' + worker.process.pid + ' died');
cluster.fork();
});
} else {
console.log(" worker:="" %s",="" process.pid);
app.set('port', process.env.PORT || 3000);
var server = app.listen(app.get('port'), function() {
debug('Express server listening on port ' + server.address().port);
});
}