Socket.io 发出导致内存稳定增加

Socket.io emit causing steady memory increase

在我向所有套接字发出一些值的程序中,使用 Socket.io 和 Redis 适配器,存在内存泄漏问题。

代码片段:

....node modules require statements here....

const server = http.createServer(app);
io = socketIo(server);
io.adapter(socketIoRedis({ host: redis_host, port: redis_port }));

for(....) {
    data_out = {A:10, B:20, id:'1234'} //Just sample data, it changes by loop
    data_ref = data_out[id]
    io.emit(data_ref, JSON.stringify(data_out));
}    

服务器中,运行程序使用pm2监控内存(pm2 monit)时,内存不断增加。服务器挂起,达到可用的最大内存大小。

如何避免内存增加?没有连接的客户端也会发生这种情况。

这是我面临的类似问题,对我来说,问题出在 redisAdapter 上。 请检查适配器实现,并确保没有泄漏内存,拍摄堆快照,将其加载到 chrome 中,看看是否可以找出泄漏者。对我来说,它是使用 ioredis 创建的 redisCluster。