内存泄漏的NodeJS应用程序在哪里?

KK

我有一个NodeJs应用程序,它通过Redis服务器上的订阅监听消息。它会收集消息持续5秒钟,然后将其推送到连接的客户端,代码如下所示:

io.sockets.on('connection', function (socket) {
    nClients++;
    console.log("Number of clients connected " + nClients);
    socket.on('disconnect', function () {
        nClients--;
        console.log("Number of clients remaining " + nClients);
    });
});

接收消息发送给客户端

cli_sub.on("message",function(channel,message) {
        oo = JSON.parse(message);
        ablv_last_message[oo[0]["base"]+"_"+oo[0]["alt"]] = message;
});

setInterval(function() {
    Object.keys(ablv_last_message).forEach( function(key) {
        io.sockets.emit('ablv', ablv_last_message[key]);
    });
    ablv_last_message = [];
}, 5000);

找到的解决方案(至少我是这样认为的):节点没有因为达到某些内部内存限制而崩溃,看起来好像由于我的VPS内存不足而崩溃了,它也是一个2GB VPS,也在运行一个或两个其他进程。将其升级到4GB之后,Node可以平稳运行,是的,总是在1.6到2.0 GB左右,但是我相信是在这里工作的GC。

达摩达兰

最好尝试使用一些工具来查找node.js中的泄漏。

查找泄漏的工具

  • Jimb Esser的node-mtrace,它使用GCC mtrace实用程序来分析堆使用情况。
  • Dave Pacheco的node-heap-dump拍摄了V8堆的快照,并将整个序列序列化到一个巨大的JSON文件中。它包括用于遍历和调查JavaScript中生成的快照的工具。
  • Danny Coates的v8-profilernode-inspector使用WebKit Web Inspector为V8的profiler和Node调试界面提供了Node绑定。
  • Felix Gnass的分支无法取消保留器图FelixGeisendörfer的Node Memory Leak Tutorial是关于如何使用v8-profiler和node-debugger的简短而优美的解释,并且是当前的最新技术大多数Node.js内存泄漏调试。
  • Joyent的SmartOS平台可提供大量工具供您调试Node.js内存泄漏

跟踪Node.js中的内存泄漏开始– Node.JS假期

还有另一个博客

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Web应用程序DataTable内存泄漏?

来自分类Dev

Android 应用程序和内存泄漏

来自分类Dev

内存泄漏在哪里

来自分类Dev

应用程序池存储在哪里

来自分类Dev

在哪里构建混合应用程序?

来自分类Dev

链接的应用程序页面在哪里

来自分类Dev

应用程序池存储在哪里

来自分类Dev

在哪里安装应用程序

来自分类Dev

我的电子应用程序在哪里

来自分类Dev

nvd3应用程序内存泄漏

来自分类Dev

了解Android应用程序中的内存泄漏

来自分类Dev

Android我的应用程序内存泄漏吗?

来自分类Dev

如何捕获Angular应用程序中的内存泄漏?

来自分类Dev

如何减少/消除Angular应用程序中的内存泄漏

来自分类Dev

Java Web应用程序中的内存泄漏

来自分类Dev

了解Android应用程序中的内存泄漏

来自分类Dev

托管应用程序中的非托管内存泄漏

来自分类Dev

实时应用程序中的内存泄漏检查

来自分类Dev

如何跟踪Rails应用程序中的内存泄漏?

来自分类Dev

iPhone应用程序内存泄漏与NSMutableArray中的UIImages

来自分类Dev

如何减少/消除Angular应用程序中的内存泄漏

来自分类Dev

Android我的应用程序内存泄漏吗?

来自分类Dev

无法找出C应用程序中的内存泄漏

来自分类Dev

Java应用程序因可疑的jdbc内存泄漏而崩溃

来自分类Dev

如何修复MQTT应用程序的内存泄漏?

来自分类Dev

无法定位 Android 应用程序内存泄漏的原因

来自分类Dev

在 Java 应用程序中使用 JAXBContext 解决内存泄漏

来自分类Dev

为什么我的应用程序会泄漏内存?如何避免内存泄漏?

来自分类Dev

安装程序在哪里安装了WinForm应用程序?