Tag: 内存泄漏

如何解码node.js中内存数据的含义并debugging内存泄漏?

我有一个RSS到MongoDB阅读器/刮板​​,通过比我的系统具有内存大的数据集运行。 当我循环数据时,系统变慢。 我相当肯定,这是因为我内存不足。 我已经添加了一些debugging信息,并做了一些更改,但我不知道如何读取debugging输出中给出的信息。 这里是一个debugging输出示例(从致命之前): 100 items Memory: { rss: 11104256, // what is RSS? vsize: 57507840, // what is VSIZE? heapTotal: 4732352, // heapTotal? heapUsed: 3407624 } // heapUsed? 200 items Memory: { rss: 12533760, vsize: 57880576, heapTotal: 6136320, heapUsed: 3541984 } // what key numbers do I watch for? // when do I […]

jsdom和node.js泄漏内存

我find了一些有类似问题的人参考答案,确保在完成时调用window.close()。 但是,这似乎并没有为我工作(节点0.8.14和jsdom 0.3.1) 一个简单的repro var util = require('util'); var jsdom=require('jsdom'); function doOne() { var htmlDoc = '<html><head></head><body id="' + i + '"></body></html>'; jsdom.env(htmlDoc, null, null, function(errors, window) { window.close(); }); } for (var i=1;i< 100000;i++ ) { doOne(); if(i % 500 == 0) { console.log(i + ":" + util.inspect(process.memoryUsage())); } } console.log ("done"); 我得到的输出是 500:{ […]

node.js处理内存不足错误

FATAL ERROR: CALL_AND_RETRY_2 Allocation Failed – process out of memory 我看到这个错误,不太确定它来自哪里。 我正在做的项目有这个基本的工作stream程: 从其他来源接收XML文章 使用xml2jsparsingXML 从新创build的JSON对象中提取所需信息并创build一个新对象。 将该对象发送给连接的客户端(使用socket.io) 正在使用的节点模块是: xml2js socket.io 编舞 MySQL的 当我收到一个XML数据包时,首先我要做的事情是把它写到一个log.txt文件中,以备稍后需要检查的地方。 我先fs.readFile得到当前的内容,然后写新的内容+旧的。 log.txt文件大概是在上次崩溃时的2400KB左右,但重新启动服务器后,它再次正常工作,所以我不认为这是问题。 在发生崩溃之前,我没有在日志中看到数据包,所以我不知道是什么原因导致崩溃…没有连接新客户端,没有消息正在发送…没有任何内容正在被parsing。 编辑 看到节点运行不断,我应该使用delete <object>之后,我使用的每个对象服务于其目的,如var now = new Date() ,我用它来比较过去发生的事情。 或者,我把它传递给callback后,来自第3步的结果对象? 编辑2 在新客户端连接的情况下,我保留一个主对象,他们需要查看过去的消息,虽然对象被删除了,但是它们并不停留在服务器的生命周期中,直到它们在客户端完成为止。 目前,我正在做这样的事情 function parsingFunction(callback) { //Construct Object callback(theConstructedObject); } parsingFunction(function (data) { masterObject[someIdentifier] = data; }); 编辑3 作为解决问题的另一个步骤,我倾倒了parser.on('end', function() {..});之前的分析器开始的process.memoryUsage().heapUsed […]

node.js文件内存泄漏?

我看到一个内存泄漏,下面的代码: while (true) { console.log("Testing."); } 我已经尝试过定义string,只是使用一个常量,但它泄漏内存,仍然: var test = "Testing."; while (true) { console.log(test); } 如果我使用文件而不是标准日志,则发生相同的泄漏: var test = "Testing."; var fh = fs.createWriteStream("test.out", {flags: "a"}); while (true) { fh.write(test); } 我想也许是因为我没有正确closures文件,但我试过这个,仍然看到了泄漏: var test = "Testing"; while (true) { var fh = fs.createWriteStream("test.out", {flags: "a"}); fh.end(test); fh.destroy(); fh = null; } 有没有人有任何提示,我应该如何写内容不漏内存?

检测代码中的node.js / javascript内存泄漏

我有一些正在工作的代码 ,但它有一个内存泄漏。 跟踪node.js中的内存泄漏有什么好策略? 在寻找这种泄漏时,我应该遵循什么步骤? 我如何跟踪代码中的泄漏? 谢谢

node.js – 可能的http服务器内存泄漏

Nodejs版本:0.8.8 这是服务器: var http = require('http'); var port = 1338; var ip = "127.0.0.1"; http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hi there\n'); }).listen(port, ip); 客户端(PHP脚本)卷发到上述服务器的发布请求。 POST是一个string(json),大小约4兆字节。 正如你所看到的,服务器对发布的数据没有任何作用。 为了debugging,我删除了我所有的代码,然后回到hello世界的例子,什么都不做:) 当我看看节点进程的内存使用情况(在活动监视器,Mac应用程序中完成)时,它会报告节点服务器的内存使用量对于每个请求都是较大的。 所以20个请求后,内存使用量翻了一番。

内存泄漏Meteor.http

当我尝试创build5个并行http请求/秒时,我从Meteor.http.get中获得内存泄漏: gist match_ids.forEach(function(match_id){ var url = self.generateUrl(match_id); Meteor.http.get(url, function(err, response){ if(!err && !response.data.result.error){ callback(null, response.data.result); }else{ callback(err || response.data.result.error, match_id); } }) }); 即使我把速度降低到1个请求/秒,它的performance也是一样的。 Meteor.setInterval(function(){ module.feeder.getMatchesForCarry(); }, 2000); Meteor.setInterval(function(){ Meteor.call("TEMP_d2_match_analyzerInsertSampleData", 9, function(err,response){}); }, 10000); 这个问题的来源是Node还是Meteor? 如果我执行5个请求/秒,在大约5分钟的运行,我得到80-100兆丰满

用memwatch-node标识内存泄漏

我的Node.js项目遭受内存泄漏,我已经在闭包中设置variables为null,我的意思是,我知道这样的代码: var a = 0; var b = 1; var c = 0; example_func(c, func(){ console.log(b); }); 会造成内存泄漏,所以我添加一些代码来将这些variables设置为null; var a = 0; var b = 1; var c = 0; example_func(c, func(){ console.log(b); a = null; b = null; c = null; }); 但我仍然有泄漏,所以我尝试使用memwatch-node来找出我的代码有什么问题。 结果表明, closure导致泄漏,但没有足够的指定目标。 我有这样的JSON { what: 'Closure', '+': 12521, size: '520.52 kb', […]

Node.js内存泄漏?

我在我的Express.js应用程序中使用一些代码,以集中一些acl逻辑。 如果函数显式返回true或false则中间件可以处理next调用。 但是,如果它不返回它的授权逻辑来执行next()只要它完成了它的事情。 为了避免写出错误数据,我只想传入一个可以调用的error()函数,它只是在内部调用next函数。 有人告诉我,这可能导致某种内存泄漏,因为next函数在自己的闭包中,并从外部引用它。 我在网上看到很多例子中使用了类似的技术,但是我对Node.js还是比较陌生,所以想知道这里是否有任何事实。 this.router.use(function (req, res, next) { var err = { code: 403, exception: 'UnauthorizedException', data: {} }, error = function () { next(err); }, authorize = app.route.authorize(req, res, next, error); if (authorize === false) { next(err); } else if (authorize === true) { next(); } }); 编辑:删除variables this.router.use(function (req, res, […]

Node.js服务器不释放内存

运行节点/快递服务器时遇到问题。 服务器运行良好,但随着时间的推移使用大量的内存。 它开始于约70mb的内存使用量。 但是,每个请求需要大约2mb。 很快它就达到了1.5GB的标准并冻结。 它也不会随着时间的推移释放任何内存。 我的server.js中是否有任何一般错误: import 'babel/polyfill'; import _ from 'lodash'; import fs from 'fs'; import path from 'path'; import express from 'express'; import ReactDOM from 'react-dom/server'; import router from './router'; import Translator from './core/Translator.js'; import cookieParser from 'cookie-parser'; import StoreContainer from './utils/redux.js'; import { combineReducers } from 'redux'; import reducers from './reducers'; […]