我正在使用nodejs为Web服务构建脱机缓存系统。 基本上,它偶尔会轮询Web服务的公共方法,并将数据缓存在memcached中。 工作得很好。
但是,我希望它能够防弹并且能够解决任何未被捕获的异常问题,从而降低服务器的性能。 我已经了解了不同的方法,我相信群集模块非常适合我的需求。但是,我不会将所有CPU内核用于我的目的,因为我只运行1个线程并更新缓存。
我将使用它的唯一原因是允许优雅地杀死工人并轻松分叉新工作
var memwatch = require('memwatch'),
cluster = require('cluster');
if (cluster.isMaster) {
console.log('start cluster with 1 workers');
cluster.fork();
cluster.on('exit', function(worker) {
console.log('worker %s died. restart...', worker.process.pid);
cluster.fork();
});
} else {
var http = require('http'),
app = require("./app.js");
http.createServer().listen(9000);
app.init();
}
process.on('uncaughtException', function (err) {
console.error((new Date).toUTCString() + ' uncaughtException:', err.message)
console.error(err.stack)
process.exit(1)
})
memwatch.on("leak", function(){
console.log("leak detected");
});
你认为这是解决我问题的正确方法吗?
由于
答案 0 :(得分:1)
如果您只运行一名工作人员,则可以更轻松地使用forever
或pm2
等主管,它们是专门为此任务编写的。如果您计划添加更多工作人员并使用群集负载平衡,那么肯定是一种正确的方法。