关于 `socket.setTimeout` 在高压请求下,会出现 `EventEmitter memory leak detected` 的问题讨论
发布于 10 年前 作者 fengmk2 10221 次浏览 最后一次编辑是 5 年前

最近又遇到 EventEmitter memory leak detected 问题了。

原因是超时使用了 socket.setTimeout() ,在压测的时候出现 #issues3 EventEmitter内存可能泄漏的异常。

于是我又想起了之前分享过的关于超时设置的问题。

我使用 setTimeout() 替换 socket.setTimeout() 后,此问题就不再出现了。

看了一下 net.js 的源代码,感觉是不会出问题的,但是实际输出和看的代码不一致。有些疑惑,不知道各位是否也遇到类似问题呢?

4 回复

猜测应该是 keep-alive 模式时,此socket 被多次request 所依赖,而每次request 都设置一次所致… 纯属猜测…

一开始我也怀疑是这个问题,后来我在setTimeout之前先removeAllListener(‘timeout’),结果还是一样。

请问,这个问题,解决了否???

回到顶部