捕捉网络异常,由于没有及时request.end()导致内存持续飙升的问题
发布于 8 年前 作者 jiangliqin 2887 次浏览 来自 问答

uncaughtException虽然能捕捉到网络异常,但不推荐用在异常可能频繁出现的地方,网络异常就是典型例子,因为这会造成网络连接没及时关闭,无法及时被gc,内存也无法释放,随着时间推移,系统内存会一直升高… 请教一下大家,用domain来捕捉网络异常的话,会出现这种现象吗?

4 回复

也是无能为力呢,因为也只是返回 err, 并没有上下文。

@yjhjstz 我刚在本地加了domain测试了下,以前用request.on(‘error’)无法捕捉而用uncaughtException来捕捉的异常, 现在可以正常被request.on(‘error’)监听了,这样能够request.end()了

这个简单的 case 是可以的,但看看这个 https://cnodejs.org/topic/516b64596d38277306407936

@yjhjstz 恩,这个我看过,貌似还是讲domain的用法和缺点,并没有提出导致内存溢出的解决方案吧?

回到顶部