什么是防止Node.js PRODUCTION服务器因未知和未处理的异常而崩溃的最佳做法?
如今,"快速失败"的心态风靡一时.你不会阻止它崩溃...你让它崩溃然后有逻辑,记录错误,通过电子邮件或文本通知你,然后优雅地恢复.我是这样做的:
使用systemd进行部署(upstart也可以,但是不再受欢迎).确保在.system文件中有重启逻辑.将节点程序部署为Docker容器.当它失败时,容器将退出,systemd将注意到它并重新启动.我还使用logging-as-a-service,这样我就可以获得所有日志.最后,我们使用警报机制(nagios,stackdriver,还有很多其他的),所以我们知道什么时候出现故障.
你问了一个最佳实践,这就是很多人现在正在做的事情.但它很贵.如果你没有任何金钱或时间或程序员来做这些事情,你需要妥协.
不过,我不会在其中的一些方面妥协:
记录失败.大多数SaaS日志记录公司都有免费计划,因此请使用它.
监控您的流程并重新启动它的东西.在操作系统级别,Upstart和Systemd相当容易配置.但如果你不能,至少使用node的"forever"包.
如果你做不到上面所做的任何事情并且确实已经击中了桶的底部,那就把它放在你的节点app的入口点:
process.on('uncaughtException', function(err) {
//do something here
});
Run Code Online (Sandbox Code Playgroud)
但实际上,您希望失败并恢复,从中学习,修复错误,这将使您的软件变得更强大.
| 归档时间: |
|
| 查看次数: |
1273 次 |
| 最近记录: |