在node.js中,如何在处理uncaughtException中的异常时重新启动服务器

时间:2013-04-01 05:49:38

标签: node.js uncaught-exception

在我的应用程序中使用uncaughtException来处理应用程序错误。在此我如何重新启动服务器。

3 个答案:

答案 0 :(得分:5)

使用forever module

npm install forever

forever会因任何原因退出服务器。

这意味着您可以在希望服务器重新启动时在代码中执行process.exit();

您需要一个启动和停止脚本才能永远参与。

典型的启动脚本如下所示。

#!/bin/sh
./node_modules/forever/bin/forever \
 start \
 -al log.forever \
 -ao log.traffic \
 -ae log.errors \
app.js

典型的停止脚本如下所示:

#!/bin/sh
./node_modules/forever/bin/forever stop app.js

在您的异常处理代码中看起来像这样:

process.on('uncaughtException', function (err) {
    console.log(err.stack);
    process.exit();
});

答案 1 :(得分:1)

您可以使用内置的nodejs cluster功能。使用此模块,您可以设置主人和几个工人,当工人死亡时,您可以生成一个新工人。我最近的一个项目的一个例子:

var cluster = require('cluster'),
numCpus = require('os').cpus().length;

if (cluster.isMaster) {

    for (var i = 0; i < numCpus; i++) {
        console.log("Spawning worker...");
        cluster.fork();
    }

    cluster.on('exit', function (worker) {
        console.log("Worker " + worker.pid + " died");
        var newWorker = cluster.fork();
        console.log("Spawning new worker " + newWorker.pid);
    });

}

答案 2 :(得分:0)

永远运作良好,设置简单

你也可以通过suback尝试fleet。 Fleet使您可以轻松地将代码部署到一台或多台服务器。然后,您可以使用fleet spawn -- node ...生成服务器进程,并且fleet将自动重启任何崩溃的进程