node的容错是如何处理的?
发布于 7 年前 作者 rongchanghai 4145 次浏览 来自 问答

因为node是单线程,并且使用大量的回调, 所以有一点错误的话就会导致node程序崩掉, 虽然使用try catch 可以在一定程度上有效的捕获异常,但是有没有更好的方法或者机制?

8 回复

IBM Express的web framework里有domain中间件来处理未捕获的异常,和避免 进程退出。 但是,我推荐使用forever或pm2来实现,进程终止 后 再 重启 的工作。

@stuartZhang express不是ibm的

@stuartZhang 生产环境我使用forever,确实是可以做到这一点,同时还可以记录日志。

@i5ting 我之前看新闻说:Express被strongloop公司管理。然后,strongloop又被IBM收购。所以,我以为Express是IBM的呢。

@stuartZhang 那是express极其不活跃的时间段,现在是独立的了

@stuartZhang @i5ting 还是说 strongloop 比较合适吧。。。ibm 太大了。 话说 domain 模块已经不推荐使用了。express 的源码里面用了 domain?

node 的容错目前我见过的最好的方案是这样的。 https://npm.taobao.org/package/graceful 这个模块在你的server抛错之后,会暂停所有新请求的连接,然后再存活一个 timeout 时间,之后退出。而非一抛错马上退出

@alsotang 此模块收藏。我会向我们佬大推荐使用这个模块。

回到顶部