现在express 是使用./bin/www 来运行。看了下里面的代码是这样
#!/usr/bin/env node
var debug = require('debug')('seller');
var app = require('../app');
app.set('port', process.env.PORT || 3001);
var server = app.listen(app.get('port'), function() {
debug('Express server listening on port ' + server.address().port);
});
我要使用cluster是否改这里的代码?可否给个小例,谢谢!
11 回复
var debug = require(‘debug’)(‘my-application’); var app = require(‘…/app’); var cluster = require(‘cluster’) var numCPUs = require(‘os’).cpus().length;
if(cluster.isMaster){
console.log("宿主启动...");
for (var i = 0; i < numCPUs; i++) {
cluster.fork();
}
cluster.on('listening',function(worker,address){
console.log('核心'+i+' pid:'+ worker.process.pid);
});
cluster.on('exit', function(worker, code, signal) {
console.log('核心'+i+' pid:'+ worker.process.pid+' 重启')
setTimeout(function() {cluster.fork();},2000);
});
}else{
app.set('port',88);
var server = app.listen(app.get('port'),function() {
});
}
//已经按照你的配置改动了下。这个是会自动延迟重启线程的代码。也就是所谓的NODE不会挂。但是错误还是要排查。
@MiguelValentine 嗯,他是挂了一个,然后重启的时候会有显示新开了两个进程。但是我看进程数没有变,那他是cluster.fork() 的时候挂了另外一个。 核心4 pid:805 重启 核心4 pid:810 核心4 pid:811