如何防止node.js进程挂掉

问题描述

node.js开发游戏服务器,如果遇到了对象属性没有定义,或者数据库等操作报错,进程容易挂掉

问题出现的环境背景及自己尝试过哪些方法

试过try catch 但是这个异步不能捕获,如果想捕获异步,还要再异步那边再捕获异常,有点繁琐。
也用过forever守护进程,这样进程挂掉会再起,但是因为我们做的游戏,有好多数据保存在内存里,重启之后内存里的数据没了。

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

你期待的结果是什么?实际看到的错误信息又是什么?

希望大神提供思路或者方法如何做到,全局捕获异常,能保证进程不挂。
阅读 6.7k
4 个回答

挂了还不能重启? --- 有好多数据保存在内存里,重启之后内存里的数据没了

process.on('uncaughtException', function (err) {
    console.log('Caught exception: ' + err);
});

有bug就修bug啊,想办法把bug掩盖过去不是不可以,但迟早要出事的

NodeJS 服务部署至服务器时需要开启 Daemon 模式,即进程始终运行于后台。

若抛出的异常未被 try {} catch (err) {} 捕获,uncaughtException 事件处理程序可防止进程直接退出。但一些底层错误引发的进程崩溃,uncaughtException 便不再适用。

可使用 PM2 实现 NodeJS 服务的进程管理。当进程异常退出时,PM2 会尝试重启进程保证服务的稳定运行。

但:有好多数据保存在内存里,重启之后内存里的数据没了???

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题