在我的应用程序中,我使用 uncaughtException 来处理应用程序错误。在此我如何重新启动服务器。
问问题
1557 次
3 回答
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();
});
于 2013-04-01T05:55:42.653 回答
1
您可以使用内置的nodejs 集群功能。使用此模块,您可以设置一个 master 和一些 worker,当一个 worker 死亡时,您可以生成一个新的。我最近的一个项目的一个例子:
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);
});
}
于 2013-04-01T05:59:38.987 回答
0
Forever 运行良好且设置简单
您也可以按子堆栈尝试舰队。Fleet 使将代码部署到一台或多台服务器变得非常容易。然后您可以使用生成您的服务器进程,fleet spawn -- node ...
并且舰队将自动重新启动任何崩溃的进程
于 2013-04-01T13:09:52.403 回答