2017-02-24 111 views
0

我通常讓我的進程管理器在崩潰時重新啓動我的應用程序。讓服務器在崩潰後重新啓動

不過,我只是遇到了錯誤處理的快遞:

app.use((err,req,res,next) => { 
    console.log(err.stack); 
    res.status(500).send({"Error" : err.stack}); 
}); 

我一直認爲應用程序是在崩潰後損壞狀態,因此應重新啓動。

當Express應用程序崩潰時,讓流程管理器重新啓動應用程序比處理上面的代碼錯誤更好嗎?

回答

1

不,您的應用程序未處於錯誤狀態,您需要正確處理任何應用程序中的錯誤。當你重新啓動你的應用程序,你只是吞下一個錯誤。

讓我告訴你的例子:

  1. 用戶提交表單後
  2. 在控制器處理此請求發生錯誤。
  3. 而是顯示500用戶的您只需重新啓動應用程序

,這將連連不斷。所以我認爲在任何錯誤上重新啓動應用都沒有任何意義。

關於流程經理:
進程管理確實上殺的的NodeJS進程嚴重錯誤重新啓動應用程序。沒有這些重新啓動你的整個應用程序將無法正常工
另外我強烈建議您將記錄器添加到您的應用程序。它可以將日誌寫入文件,並且可以跟蹤錯誤的歷史記錄。 WinstonDebug是很好的。

相關問題