我一直在运行一个简单的(虽然内存很大)socket.io + redis节点应用程序,以方便实时通知(请参阅Node.js + Socket.io + Redis app via PM2 with large memory footprint),并在更新到最新节点后,socket.io,redis等,我注意到应用程序在内存中疯狂增长。
我已将应用程序缩减为此用于调试:
var server = require('http').createServer(),
io = require('socket.io')(server);
server.listen(8890);
io.on('connection', function (socket) {
console.log(`Connection: ${socket.id} Remote: ${socket.client.conn.remoteAddress} Total: ${io.engine.clientsCount}`);
});
当我在有大约100个用户呼叫node server.js
的服务器上运行socket = io('http://url-of-nodeapp/)
时,它会显示大量连接,内存会不断增长和增长。该站点主要是AJAX,因此用户应该每隔几分钟左右打开一次套接字会话(某些页面会完成刷新)。换句话说:它应该很安静。
关于可能导致这种情况的任何想法?或者诊断如何启动这么多会话的方法?