Tag: 内存泄漏

NodeJS警告:可能的事件发射器泄漏。 11个开放的听众添加

我使用NodeJS和WS来testingwebsocket。 为了从服务器上卸载一些工作,我想从客户端发送ping到服务器而不是其他的方式。 但是,每当我运行我的代码我得到这个错误: > (node) warning: possible EventEmitter memory leak detected. 11 pong listeners added. Use emitter.setMaxListeners() to increase limit. Trace at WebSocket.addListener (events.js:239:17) at Object.<anonymous> (/home/ubuntu/NodeJS-Runtime/websockets/client.js:40:12) at Module._compile (module.js:410:26) at Object.Module._extensions..js (module.js:417:10) at Module.load (module.js:344:32) at Function.Module._load (module.js:301:12) at Function.Module.runMain (module.js:442:10) at startup (node.js:136:18) at node.js:966:3 这里是我的代码: for(var i=0; i<20; i++) { const clientNum […]

为什么我的间隔函数在Node.js中导致内存泄漏?

我有一个正在经历内存泄漏的Node.js服务器。 它使用socket.io发送消息给连接的客户端。 我已经设置了一个function,每分钟向客户端发送一次消息。 function是: var message = "smile"; const doEveryMinute = (socket) => { setTimeout(() => { setInterval(() => doEveryMinute(socket), 6000); socket.emit('smile', message); }, (60 – date.getSeconds()) * 1000); } 这个函数在用户连接的时候被io.on函数调用: io.on('connection', function (socket){ doEveryMinute(socket); }); 我不明白为什么这会导致内存泄漏,但它肯定是造成一个。 我可以在htop看到,内存缓慢但肯定填满,直到服务器崩溃显示memory overflow exception消息。 题: 为什么这段代码会导致内存泄漏?

NodeJS 0.3.1应用程序泄漏内存

我有一个相当简单的NodeJS应用程序,它只是一个接受请求并使用Readability(基于https://github.com/arrix/node-readability )的formsparsing内容的shell。 问题是,我注意到应用程序泄漏内存 – 我已经运行node –trace-gc跟踪node –trace-gc和内存缓慢build立与每个请求偶尔gc传递无所事事。 $ node –trace-gc server.js Scavenge 2.3 -> 2.3 MB, 1 ms. Mark-sweep 3.5 -> 2.9 MB, 2 ms. Scavenge 4.4 -> 3.8 MB, 0 ms. 16 Feb 10:57:51 – Server started on PORT 8000 Scavenge 5.9 -> 5.0 MB, 2 ms. Mark-sweep 5.0 -> 4.2 MB, 3 ms. […]

Node.js:严重的内存泄漏更新版本中的错误?

有什么问题? 首先,我发现node.js模块或代码有问题,因为当我访问我的页面时,每次访问后内存都减less了,并且没有被释放回来。 经过几个小时的debugging,我找不到任何问题,所以我尝试了默认的node.js服务器示例,以查看问题是在我的代码还是在node.js本身。 如何重复该问题: 所以我创build了这样的服务器: var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }).listen(80); console.log('Server running at port 80'); 我访问了mydomain.com并重复刷新,并且空闲的内存不断下降,甚至在我释放刷新之后,内存保持在同一级别,所以node.js保留它。 那么这里有什么问题? 环境 我正在testingubuntu 12 , max os x 10.8.3与node v0.9.0 , node v0.10.0 , v0.10.2 , v0.10.4 , v0.11.1存在的问题,并在node v0.8.21它工作正常,这就是为什么我说这可能是一个新版本的错误。

内存泄漏在nodejs websocket服务器中

我使用websockets来传输video文件,这意味着他们是大文件。 服务器端(也是客户端)使用nodejs实现,在javascript中使用binaryjs。 它运行良好,直到我开始有大量的客户端,是什么使服务器崩溃(Linux操作系统杀死进程)。 正如我所观察到的,它耗尽了内存,因为对于每个客户端来说,它都占用了大量内存,但是当客户端断开连接时,这个内存不会被释放。 我认为这应该在内部完成,我不应该担心记忆,我错了吗? 我可能做错了什么? 正如我所看到的那样,“发送”function是保留内存来保存它发送的内容,但是永远不会释放它。 (如果您评论该行,则不存在内存问题)以下是代码: var fs = require('fs'); var BinaryServer = require('binaryjs').BinaryServer; var bs = BinaryServer({port: 8080}); var nchunks=116; bs.on('connection', function(client){ for(var i=1; i<=nchunks; i++) { var name="/var/www/1.m4s"; var fd=fs.openSync(name.replace("1.m4s", i+".m4s"), 'r'); var buf = new Buffer(fs.fstatSync(fd).size, 'binary'); fs.readSync(fd, buf, 0, buf.length, null) client.send(buf); fs.closeSync(fd); if(i==nchunks){ client.send("end"); } } client.on('close', function(c){ […]

进程节点不断增长,直到吃完所有内存

这个问题和我以前的问题是一样的,但是由于反复编辑变得太大了,我更喜欢再问一遍。 我正在研究覆盆子pi(raspbian,512M RAM),并在node.js(v0.10.2)中做一个JavaScript应用程序。 在这里,我需要下载一些video,至于我这样做的块: function download (file_url, callback){ var option={host:url.parse(file_url).host, port:80,path:url.parse(file_url).pathname}; var file_name=url.parse(file_url).pathname.split('/').pop(); var file=fs.createWriteStream(DOWNLOAD_DIR+file_name); http.get(options, function(res){ res.on('data', function(data){ file.write(data); }).on('end'), function(){ file.end(); callback(DOWNLOAD_DIR+file_name); }); }); }; 我相信与使用node.js下载大文件类似, 避免了高内存消耗 问题在于,节点进程的rss不停止增加,大约从100M开始,在400M左右(最大内存)时被os所杀死。 由于我新内存泄漏跟踪和运行应用程序以外的任何浏览器,我要么不能使用或不能理解如何使用内存工具,我已经从util库中获取rss。 我的问题是:为什么rss不断增加,甚至当我在飞行中写入大量数据,和/或在哪里寻找解决scheme? 编辑:第二次看看上面的链接,我注意到使用createWriteStream上的标志,但无法find它们的列表或效果,是否有任何人在这里谁知道任何方式来访问这样的文档,它可能是相关的 编辑2:我现在一味地遵循Corlosdp的代码,添加标志(附加?)使rss以随机间隔下降2M,并使我的应用程序持续更长时间,但它仍然最终死亡 编辑3:我发现了一些有趣的东西 我编辑了下载function,看看我在文件中的位置: function download (file_url, callback){ var i=0; var option={host:url.parse(file_url).host, port:80,path:url.parse(file_url).pathname}; var file_name=url.parse(file_url).pathname.split('/').pop(); var file=fs.createWriteStream(DOWNLOAD_DIR+file_name, {flags:'a', encoding:'binary'); setInterval(function(){ console.log(i+"o downloaded"); console.log(util.inspect(process.memoryUsage())); […]

是setInterval处理程序考虑内存泄漏?

javascript代码: function blah() { var blahInterval = setInterval(function(){ if( some_global_variable == 5 ) clearInterval(blahInterval); }, 1000); } 我有这个代码有多个变种,它将在NodeJS脚本中被称为gazillion次。 我应该delete blahInterval; clearInterval之后? 这是内存泄漏吗? 或者一旦setInerval函数超出范围,GC将清除它?

内存泄漏在简单的nodejs应用程序

为了好玩而试用nodejs,我写了一个非常非常简单的程序,testingCollat​​z猜想的数量是荒谬的。 这在理论上应该没问题。 我遇到的问题是这个超级简单的代码有内存泄漏,我不能确定为什么。 var step; var numberOfSteps; for (var i = 0; i < 100000000000000; i++) { step = i; numberOfSteps = 0; while (step !== 1) { if (step%2 === 0) step /= 2; else step = 3 * step + 1; numberOfSteps++; } console.log("" + i + ": " + numberOfSteps + " […]

节点GeoFire内存泄漏?

我似乎有一些非常基本的firebase + firebase-queue +在Node上运行的GeoFire代码,这看起来会导致内存泄漏,但是我并不相信我并没有把某些东西搞砸。 'use strict'; if (!process.env.FIREBASE_PROJECT_ID) { require('dotenv').config({ silent: true }); } let fbConfig = require('./firebase-config'); let fbNodes = fbConfig.NODES; let Queue = require('firebase-queue'); let admin = require("firebase-admin"); let GeoFire = require('geofire'); admin.initializeApp({ credential: admin.credential.cert(fbConfig.FIREBASE_SERVICE_ACCOUNT), databaseURL: fbConfig.APP_SETTINGS.databaseURL }); let db = admin.database(); let queueRef = db.ref(fbNodes.QUEUE); let geoFire = new GeoFire(db.ref(fbNodes.GEOFIRE)); var q […]

节点应用程序随着时间的推移逐步进食

我刚刚在DigitalOcean上推出了两个Express服务器以及一个mongodb实例。 我正在使用PM2来保持它们的运行。 当我使用htop查看内存使用情况时,总使用量通常在220-235mb左右(总共488mb)。 我能看到的唯一变化就是蓝色条,我假设它是缓冲区内存,使用中的实际绿色内存似乎总是相同的。 然而我看DO的图表,在过去的24小时内,内存graphics一直在缓慢攀升,比如说每小时总量的0.5%,有时会下降,但是总体上是在上升,目前一直在60左右,几个小时内总内存的65%。 这些节点networking服务器上几乎没有stream量,但是内存不断增加。 所以我的问题是,这可能是我的服务器之一的内存泄漏,还是增加扩展其内存的V8引擎的本质?