Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – 内存泄漏的NodeJS应用程序,它在哪里?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_772_4@ 我有一个NodeJs应用程序,它通过redis服务器上的subscribe来监听消息.它收集消息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探查器和Node调试接口提供节点绑定.
> Felix Gnass的分叉与un-disables the retainers graph相同
FelixGeisendörfer的Node Memory Leak Tutorial是关于如何使用v8-profiler和node-debugger的简短而精彩的解释,目前是大多数Node.js内存泄漏调试的最新技术.
> Joyent的smartOS平台,为您提供debugging Node.js memory leaks的工具库

Tracking Down Memory Leaks in Node.js – A Node.JS Holiday Season.

一个blog

@H_404_47@

大佬总结

以上是大佬教程为你收集整理的node.js – 内存泄漏的NodeJS应用程序,它在哪里?全部内容,希望文章能够帮你解决node.js – 内存泄漏的NodeJS应用程序,它在哪里?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。