node js 调用 ws 的库 内存泄漏
使用场景:后端获取实时的图片数据 推送给前端 一帧一帧显示 出现问题:只有一个连接数的时候 提交正常 当连接数 增加到10个左右的时候 内存开始上涨 用调试工具分析了一下 不知道怎么定位数据
这是重现代码 https://github.com/yh4922/ws_memory_demo
不知道如何下手
5 回复
你的测试代码是 ws.send 太频繁了,而且 ws 对超过 128k 的包会自动分片,导致你的 node demo 里全部堵在 ws.send 上(之前的 ws.send 处于 pending 状态,新的 ws.send 会将内容存到 bufferedRequest.next 属性上层层挂载),最后导致 socket rss 积压:
另外从 cpuprofile 也能看出来这个问题:
所以 broadcast 到所有 ws client 的频率你得做下限制
@yh4922 这是我开源的 Node.js 性能监控解决方案,详情参见:https://zhuanlan.zhihu.com/p/147576798
欢迎使用哦,有问题可以加钉钉群 35149528 咨询
@hyj1991 好的了解一下 感谢