Tag: 内存

什么是破坏进程内存?

2012-07-20T03:04:50+00:00 heroku[web.1]: Process running mem=546M(106.8%) 2012-07-20T03:04:50+00:00 heroku[web.1]: Error R14 (Memory quota exceeded) 2012-07-20T03:05:11+00:00 heroku[web.1]: Process running mem=583M(113.9%) 2012-07-20T03:05:11+00:00 heroku[web.1]: Error R14 (Memory quota exceeded) 2012-07-20T03:05:30+00:00 heroku[web.1]: Process running mem=611M(119.4%) 2012-07-20T03:05:30+00:00 heroku[web.1]: Error R14 (Memory quota exceeded) 2012-07-20T03:05:50+00:00 heroku[web.1]: Process running mem=611M(119.4%) 2012-07-20T03:05:50+00:00 heroku[web.1]: Error R14 (Memory quota exceeded) 2012-07-20T03:06:10+00:00 heroku[web.1]: Process running mem=605M(118.3%) 2012-07-20T03:06:10+00:00 heroku[web.1]: […]

节点JS应用程序内存压力上升

我正在研究一个Node JS应用程序,并面临严重的内存压力问题。 以下是启动应用程序(恒定负载)60分钟内的内存使用趋势: 记忆用途大幅上涨至95%,但之后保持相当稳定。 我之前和之后采取了内存转储,但似乎有一些与我如何捕获转储的问题,因为两个转储文件之间的差异只是几个MB。 这是在chrome分析中heapdump的样子: 但是我对这个很陌生,不确定我应该找什么。 有人可以提供任何关于如何找出内存问题的指针,如何检测内存泄漏,或如何理解这里提到的heapdump文件? 节点版本:0.12.14 输出为 – find node_modules -type f -name "*.node" – 如下所示: node_modules/simpleflake/node_modules/bignum/build/Release/bignum.node node_modules/simpleflake/node_modules/bignum/build/Release/obj.target/bignum.node node_modules/heapdump/build/Release/addon.node node_modules/heapdump/build/Release/obj.target/addon.node node_modules/couchbase/build/Release/couchbase_impl.node – npm list –depth=0输出如下: aws-sdk@2.5.3 body-parser@1.11.0 check-types@6.0.0 couchbase@2.2.2 elasticsearch@10.1.3 expect@1.20.2 express@4.14.0 jshint@2.9.3 minimist@1.1.3 mocha@2.5.3 moment@2.9.0 morgan@1.5.3 newrelic@1.30.0 request@2.53.0 simpleflake@1.0.0 underscore@1.7.0 why-is-node-running@1.2.2 (https://github.com/mindtickle/why-is-node-running.git#96f3c8da54b110e8a9a1423361d2da7c125784f6) winston@1.0.2 winston-aws-cloudwatch@0.4.2 另外,是否有可能看到我正在使用的任何包是否负责内存泄漏? 提前致谢。

v8 / node.js中的内部数组表示

我为node.js写了一个小内存基准: http : //pastebin.com/KfZ4Ucn4 它使用process.memoryUsage().heapUsed来测量内存使用情况process.memoryUsage().heapUsed for 3 cases: 具有10个属性的对象数组,每个元素的属性名称不同 具有10个属性的对象数组,具有相同的属性名称 具有10个属性,相同属性名称的对象数组,表示为数组对象 情况1的开销为1300字节,情况2为300字节,情况3为150字节。同样只有情况1的垃圾收集,而在后一种情况下,内存使用量不下降。 这些效果是否有任何解释或文档? 我试图优化对象的对象数组的内存使用情况,像 [ { foo : { bar : 1, baz : 2 } , bar : { bar : 2, baz : 7 } } , { foo : { bar : 1, baz : 2 } , bar : { bar […]

防止Javascript函数因内存太多而耗尽内存

我在nodeJS中构build了一个使用request和cheerio来parsingDOM的web刮板。 当我使用node ,我相信这是更一般的javascript问题。 tl; dr – 创build〜60,000 – 100,000个对象,耗尽了我所有的计算机的RAM,导致节点out of memory不足。 这是刮板的工作原理。 它是循环内的循环,我从来没有devise过这么复杂的东西,所以可能有更好的方法来做到这一点。 循环1:在数组中创build10个名为“sitesArr”的对象。 每个对象代表一个网站刮。 var sitesArr = [ { name: 'store name', baseURL: 'www.basedomain.com', categoryFunct: '(function(){ // do stuff })();', gender: 'mens', currency: 'USD', title_selector: 'h1', description_selector: 'p.description' }, // … x10 ] 循环2:循环“sitesArr”。 对于每个网站,通过“请求”访问主页,并获取一个分类链接列表,通常是30-70个url。 将这些URL附加到名称为“categories”的数组属性中的当前所属的“sitesArr”对象。 var sitesArr = [ { name: 'store name', […]

网站stream量和内存使用量之间的关系是什么?

我有一个运行了一段时间的节点应用程序。 我一直在监视内存的使用情况,而且我注意到无论是否有less量的活动用户或大量的用户,服务器上的内存使用率都保持不变。 在Node中,活动用户数量与其使用的内存量之间有什么关系? 根据我所看到的,似乎没有任何真正的联系。 这仅仅是因为我没有处理大量的活跃用户(我见过的最高活跃用户数是100)。

节点应用程序正在等待来自Stream的最后一个“可读”事件

我正在从一个Web服务加载图像的Node.js应用程序,通过使用ImageMagick处理缩略图,并将结果保存到此Web服务。 工作stream程是类似的 [Web Service] ==> HTTP Response Stream ==> ImageMagick ==> HTTP Request Stream ==> [Web Service] 我使用Node.js http模块检索原始图像stream并保存缩略图stream,并使用imagemagick-stream模块生成缩略图,而不使用任何临时文件。 由于我还需要发送缩略图长度,所以我利用memorystream模块来将缩略图保存在内存中。 所以工作stream改变了[Web Service] ==> HTTP Response Stream ==> ImageMagick ==> memory stream ==> HTTP Request Stream ==> [Web Service] 该代码在我的笔记本电脑(Mac)和工作站(Windows)中运行良好,但在具有特殊PNG图像的Ubuntu服务器上不起作用。 但是这个图像在Mac和Windows上运行得很好,而且如果我使用ImageMagick命令行的话,它也能工作,所以这不是一个糟糕的图像。 这种现象是,当处理这个图像时,我的应用程序继续等待从ImageMagick接收数据,这意味着它永远不会触发“结束”或“错误”事件。 当我在我的Mac上尝试时,我可以看到ImageMagick发出了3个“可读”事件,这意味着它处理了3个数据块。 但在Ubuntu上,它只发出了2个“可读”的事件,然后我的代码呆在那里。 我不知道为什么会发生这种情况? 由于图像可以在Mac,Windows上处理,并且可以在命令行上在Ubuntu上处理,所以我不认为这是因为图像和ImageMagick。 我强烈的怀疑有处理stream的东西是错误的,但不知道。 下面是一些伪代码 var im = require('imagemagick-stream'); var MemoryStream = require('memorystream'); […]

无法在Node.js中创build〜1.2GB的Uint8Array

以下JavaScript代码: new Uint8Array(1253377279) 当运行node.js结果是: RangeError: length > kMaxLength at repl:1:2 at REPLServer.self.eval (repl.js:110:21) at Interface.<anonymous> (repl.js:239:12) at Interface.emit (events.js:95:17) at Interface._onLine (readline.js:202:10) at Interface._line (readline.js:531:8) at Interface._ttyWrite (readline.js:760:14) at ReadStream.onkeypress (readline.js:99:10) at ReadStream.emit (events.js:98:17) at emitKey (readline.js:1095:12) 奇怪的是,考虑到我有8GB的内存,足以填满arrays几次。 我试过了: – –max-old-space-size=1900没有成功。 我能做什么?

这是否意味着node.js中的内存泄漏?

我使用node.js 0.10.18(在Amazon EC2上)作为我们的ios游戏http服务器。 我使用process.memoryUsage()来打印内存使用情况。 我发现我们的节点的内存使用情况是不正常的。 运行两天后: machine1节点: 2014-10-13T02:35:04.782Z – 重要:进程:堆总计119.70 MB heap使用84.62 MB的RSS 441.57 MB的 machine2节点: 2014-10-13T02:36:01.057Z – 重要:进程:堆总计744.72 MB heap使用108.19 MB的RSS 1045.53 MB 结果是: 这两个heapUsage都非常小,它与节点进程运行多长时间无关。 machine2上的heapTotal比heapUsed ,在重新启动过程之前,它永远不会变小。 但machine1 heapTotal看起来很正常。 machine1是Amazon EC2 m3.xlarge, machine2是Amazon EC2 m3.medium。 从Amazon CloudWatch中我知道machine2的性能不足,有时machine2的CPU使用率会达到100%。 那么exceptionheapTotal使用情况是否与硬件的不足有关? 100%的CPU使用率不是我们节点进程的结果,因为使用node-usage模块,我看到我们节点进程的CPU使用率永远不会高于50%。 我认为这个用法是被邻近的虚拟机盗取的(你知道在Amazon EC2上有共享的CPU时间)。 我知道缓冲区内存使用情况= (rss – heapTotal) 。 我发现两台机器上的缓冲区内存使用量会逐渐增加。 你看,两天运行两次缓冲存储器的用量都超过了300MB。 我的问题是: 为什么heapTotal即使heapUsed非常小也不会释放heapTotal使用情况? 是节点本身的问题,还是我自己的代码的一些错误? 是解决它升级硬件的唯一方法吗? 为什么缓冲区使用量逐渐增加? 这是否意味着有内存泄漏? […]

node-webkit辅助内存pipe理

我正在编写一个轻量级的单页面应用程序node-webkit应用程序。 最近我一直在做一些内存分析,以检测内存泄漏,并保持应用程序即使在旧系统上也可用。 我发现我的代码本身的内存效率很高,但是运行它的node-webkit Helper进程随着时间的stream逝而不停地吃越来越多的内存。 要提供一个简单的“重启”function,我只需重新加载页面; 我认为这也将清除内存中的大部分对象,但是我发现node-webkit Helper的内存使用量在每次重新加载时实际上增加了近10 MB! 在node-webkit的问题页面上的这个问题线程中 ,我发现了这个神奇的代码行 require('nw-gui').Window.get().reload(3) 这似乎重新加载页面,同时清理一些内存(我通常最终节省了约50MB的节点WebKit加上我的应用程序需要约15 MB),但它是有点hacky(也,它只能执行一次显然是相同的页面,所以我必须链接它与location.reload()来实现“清除一切,重新启动”function)。 有没有人有任何线索,如何保持node-webkit的助手内存使用情况和/或提供某种“重新启动”function在一个不太冒险的方式? 关于内存pipe理如何在node-webkit的上下文中进行解释的解释是值得赞赏的,因为这个主题看起来相当复杂,并且没有很多容易理解的来源。

在mac os x上的有线内存增加nodejs迭代

当试图做一个未知的迭代次数的循环,我注意到我的mac上的有线存储器只是不断增加。 我有以下代码 var Iteration = function () { this.counter = 0; }; Iteration.prototype.go = function () { global.gc(); var util = require('util'); console.log('%s, %s', ++this.counter, util.inspect(process.memoryUsage())); var self = this; var largeArray = new Array(1e4); var l = largeArray.length; for(var i = 0; i<l; i++) { largeArray[i] = new Array(l); for(var j = 0; j […]