在我使用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)时,内存不断增加。而服务器只是挂起,达到了最大的内存大小。
如何避免内存的增加?这也是在没有连接客户的情况下发生的。
发布于 2022-01-13 16:25:45
这是我面临的类似问题,对我来说,问题在于redisAdapter。请检查适配器实现,并确保没有泄漏内存,获取堆快照,将其加载到chrome中,看看是否可以找到泄漏者。对我来说,这是使用ioredis创建redisCluster的过程。
https://stackoverflow.com/questions/69108948
复制相似问题