在我的应用程序中使用uncaughtException来处理应用程序错误。在此我如何重新启动服务器。
答案 0 :(得分:5)
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将自动重启任何崩溃的进程