我正在使用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");
});


您认为这是解决我问题的正确方法吗?

谢谢

最佳答案

如果只运行一个工作程序,则使用foreverpm2之类的主管会更容易,它们是专门为该任务编写的。如果您计划添加更多工作线程并使用群集负载平衡,那么可以,这无疑是正确的方法。

关于node.js - 优雅地处理Node Js中的异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19048520/

10-09 15:10