我有一个节点应用,我使用群集在多个核心上运行。
我遇到了一个问题,当我的应用程序抛出异常时,工作人员会死亡并且不会重新启动。这是有道理的,但我想知道是否有更好的方法来处理重启这些工作者而不是必须监视它或尝试/捕获或监听每个错误。
之前我曾经使用过,似乎这样的东西对集群来说效果很好。
有没有办法重新启动它们,或者在Express中的顶层添加“pokemon”异常处理,以确保我的工作人员在出现意外异常时不会死亡?
答案 0 :(得分:2)
有许多第三方工具可以帮助解决这个问题。 Monit(http://mmonit.com/monit/)在Node社区中非常受欢迎。另一种选择是supervise
(http://cr.yp.to/daemontools.html)。
答案 1 :(得分:2)
在死亡事件发生时分叉新工人
cluster.on("death", function(worker){
console.log("worker " + worker.pid + " died");
var newWorker = cluster.fork();
console.log("worker " + newWorker.id + " live");
});