关于 `socket.setTimeout` 在高压请求下,会出现 `EventEmitter memory leak detected` 的问题讨论
最近又遇到 EventEmitter memory leak detected
问题了。
原因是超时使用了 socket.setTimeout()
,在压测的时候出现 #issues3 EventEmitter内存可能泄漏的异常。
于是我又想起了之前分享过的关于超时设置的问题。
我使用 setTimeout()
替换 socket.setTimeout()
后,此问题就不再出现了。
看了一下 net.js
的源代码,感觉是不会出问题的,但是实际输出和看的代码不一致。有些疑惑,不知道各位是否也遇到类似问题呢?
4 回复
猜测应该是 keep-alive 模式时,此socket 被多次request 所依赖,而每次request 都设置一次所致… 纯属猜测…
一开始我也怀疑是这个问题,后来我在setTimeout之前先removeAllListener(‘timeout’),结果还是一样。
请问,这个问题,解决了否???