话说使用try catch在同步的时候会影响性能,在异步的时候不可用。大神们有没有好的package,能很好的解决这个问题的。
我觉得吧,谨慎引入第三方模块,保持一致性,守护进程大法好。。。
没什么特别好的办法
- 流程上promise/a+处理异常就好了
- pm2起多个实例,一个挂掉,不影响其他的
- 1个服务器里最好只起1个pm2 app实例,不然如果一个挂了,会产生雪崩效应(docker是个好东西)
@reverland 怎么做才能更好的不让异常崩了整个进程,或者说怎么守护好进程呢???求解
@i5ting 太感谢了。看看docker这个东西。
这个不是说有没有包就可以解决的,关键写代码的时候要处理好异常情况,还有就是i5ting提到的,起多个实例,pm2兼具守护进程的作用
@weierbufan 我没啥好办法。。。服务跪了就重启。。。
@ncuzp 其实我就是想找有没有什么package能够很好的处理异常。。。。
@weierbufan 嗯 关于错误处理参考joyent的一篇文章可以参考下思路:Nodejs错误处理最佳实践(译文: http://code.oneapm.com/nodejs/2015/04/13/nodejs-errorhandling/)( 原文: https://www.joyent.com/developers/node/design/errors)
好好看看8楼那个链接
经验:
- code写好点,各种parse error好好自己捕捉
- 做好Error monitor, 如果进程倒了要能看到log和stack trace
- 应用ls “我没啥好办法。。。服务跪了就重启。。。”
其实有个包 我是在用的 不过不推荐 https://github.com/CrabDude/trycatch 可以做一个大的入口 然后放在那里卡一下,production可以用下,最终目的是好好填坑…
@weierbufan 最好的还是将项目的自动化测试补起来吧。既然异常退出了,肯定是代码出bug了。多进程保护只是亡羊补牢,只是给你尽快修bug缓冲一点点时间而已。生产环境出行worker进程异常退出重启,都是最严重的报警。 自豪地采用 CNodeJS ionic
@i5ting docker 已经批量部署了吗,没敢在正式环境用啊~
@fengmk2 谢谢,我们正在做测试这块,面对这种问题,还是把测试拿出来,尽可能避免在生产环境下出现exception吧。