鍍金池/ 問答/HTML/ 如何防止node.js進程掛掉

如何防止node.js進程掛掉

問題描述

node.js開發(fā)游戲服務器,如果遇到了對象屬性沒有定義,或者數據庫等操作報錯,進程容易掛掉

問題出現的環(huán)境背景及自己嘗試過哪些方法

試過try catch 但是這個異步不能捕獲,如果想捕獲異步,還要再異步那邊再捕獲異常,有點繁瑣。
也用過forever守護進程,這樣進程掛掉會再起,但是因為我們做的游戲,有好多數據保存在內存里,重啟之后內存里的數據沒了。

相關代碼

// 請把代碼文本粘貼到下方(請勿用圖片代替代碼)

你期待的結果是什么?實際看到的錯誤信息又是什么?

希望大神提供思路或者方法如何做到,全局捕獲異常,能保證進程不掛。
回答
編輯回答
擱淺

NodeJS 服務部署至服務器時需要開啟 Daemon 模式,即進程始終運行于后臺。

若拋出的異常未被 try {} catch (err) {} 捕獲,uncaughtException 事件處理程序可防止進程直接退出。但一些底層錯誤引發(fā)的進程崩潰,uncaughtException 便不再適用。

可使用 PM2 實現 NodeJS 服務的進程管理。當進程異常退出時,PM2 會嘗試重啟進程保證服務的穩(wěn)定運行。

但:有好多數據保存在內存里,重啟之后內存里的數據沒了???

2017年11月5日 22:30
編輯回答
大濕胸

掛了還不能重啟? --- 有好多數據保存在內存里,重啟之后內存里的數據沒了

2017年11月28日 12:18
編輯回答
心上人

有bug就修bug啊,想辦法把bug掩蓋過去不是不可以,但遲早要出事的

2017年4月13日 22:24
編輯回答
半心人
process.on('uncaughtException', function (err) {
    console.log('Caught exception: ' + err);
});
2018年7月5日 16:48