我正在使用nodejs为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");
});
您认为这是解决我问题的正确方法吗?
谢谢
最佳答案
如果只运行一个工作程序,则使用forever
或pm2
之类的主管会更容易,它们是专门为该任务编写的。如果您计划添加更多工作线程并使用群集负载平衡,那么可以,这无疑是正确的方法。
关于node.js - 优雅地处理Node Js中的异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19048520/