首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iisnode node.js socket.io意外内存泄漏

iisnode node.js socket.io意外内存泄漏
EN

Stack Overflow用户
提问于 2016-05-03 19:54:36
回答 1查看 210关注 0票数 0

我的公司正在与一些问题作斗争。node.exe占用了太多的内存和CPU。

服务器如下所示:

代码语言:javascript
复制
var userList = [];

/* NODE.JS */
var server = require('http').createServer(function (req, res) {
    res.writeHead(200);
    res.end('ok');
}).listen((process.env.PORT || 88));

/* SOCKET.IO */
//var io = require('socket.io')(server);
var io = require('socket.io')(server);

io.on('connection', function (socket) {
    socket.on('connectUser', function (user) {
        if (!isAuthenticated(user.user, user.pass)) {
            socket.disconnect(socket.conn.id);
        } else {
            //Session des Users
            user.session = socket.conn.id;
            //if (userList.indexOf(user)== -1)
            userList.push(user);
            io.emit('userOnline', {onlineUser:  userList});
       }
    });

    socket.on('sendMessageToUser', function (sendObj) {
            if(sendObj && sendObj.to)   {
                var userArr = userList.filter(function(val, index, arr) {
                    if(sendObj.to.indexOf(val.id) > -1)
                        return val;
                });

                userArr.forEach(function(user) {
                   socket.to(user.session).emit('getMessageFromUser', sendObj);
                });
            }
    });

    socket.on('disconnect', function () {
        userList = userList.filter(function(val, index, arr) {
            if(val.session !== socket.conn.id)
                return val;
        });

        io.emit('userOnline', {onlineUser:  userList});
    });
});

function isAuthenticated(user, pass) {
    return true;
}

当用户连接时(每次页面访问)将连接到服务器。userList将填充有关该用户的信息。离开页面或刷新后,用户将从该对象中删除。

该服务器还托管另一个node.js应用程序。在启动我的脚本后,另一个应用程序的内存和CPU也在上升!

有没有人能确认这是个bug?或者我必须将两个应用程序区别对待?

我的服务器是这样的: iisnode (v0.2.18.0) node (v0.12.4) npm (v2.10.1) socket.io (v1.3.5)

我知道他们中的大多数都已经过时了!我还没有时间在iisnode下测试当前的版本。

EN

回答 1

Stack Overflow用户

发布于 2016-05-04 01:18:19

如何删除用户?如果处理不当,可能会出现内存泄漏。

最好的方法是分析您的节点进程并查看保留了哪些值,它们将为您指出内存泄漏的原因。你可以在这里阅读更多关于如何做到这一点的内容:http://www.alexkras.com/simple-guide-to-finding-a-javascript-memory-leak-in-node-js/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37003449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档