Tag: 内存不足

处理内存错误使用nodejs时,什么都不应该那么大

确切的错误说:“致命错误:CALL_AND_RETRY_LAST分配失败 – 进程内存不足”程序应该在第n个位置获得素数,但不pipe数量有多less都会失败。 这个错误究竟意味着什么,我该如何解决? var primes = [2, 3, 5]; var x = 0; var y = 0; var z = 6; var nthPrime = function(number){ while (primes.length <= number){ y = 0; while (y <= primes.length){ x = primes[y]; if (z % x === 0){ y++; } else{ primes.push(z); z++; } } } console.log(primes[number]); […]

迭代昂贵的asynchronous函数 – 内存约束,recursion?

我有一些问题,我认为是在node.JS服务器端应用程序中使用Promise的一个基本问题 – 不幸的是我看不到如何解决它,尽pipe看到其他类似的问题(我认为)。 基本上我的问题是这样的:我试图检索一些外部数据,然后处理它。 有很多数据,所以我必须逐页检索它。 另外考虑到数据的大小,我的服务器不能一次执行多个调用/进程,因为内存不足和服务器崩溃。 我不知道,直到执行时间,我必须检索多less页来获取所有的数据。 我已经尝试执行一个forEach循环与数组的页数然而,这显然不工作。 例如: pages = [1,2,3,4]; pages.forEach( function(pageNumber){ veryMemoryExpensiveFunctionRetrievingAndProcessingPage(pageNumber).then( // handle the results); }) (这里的行为是所有函数都是同步执行的而服务器内存不足)。 我很困在这里 – 我知道我需要同步多次执行该function,但不知道从哪里开始这样做! 我也试图recursion,但是这又一次导致内存不足,因为每个调用都添加到堆栈中。

NodeJS – 处理超过100个并发连接的内存

我正在开发物联网应用程序,客户端每2秒向服务器发送生物潜在信息。 客户端每2秒发送一个包含400行数据的CSV文件。 我的服务器上运行了一个Socket.IO websocket服务器,它从每个客户端捕获这些信息。 一旦捕获到这些信息,服务器必须每隔2秒将这400条logging存入一个mysql数据库。 虽然只要客户端数量很小,这种方式就可以很好地工作,但随着客户端数量的增长,服务器开始抛出“进程内存exception”。 以下是收到的例外: <— Last few GCs —> 98522 ms: Mark-sweep 1397.1 (1457.9) -> 1397.1 (1457.9) MB, 1522.7 / 0 ms [allocation failure] [GC in old space requested]. 100059 ms: Mark-sweep 1397.1 (1457.9) -> 1397.0 (1457.9) MB, 1536.9 / 0 ms [allocation failure] [GC in old space requested]. 101579 ms: Mark-sweep […]

致命错误:尝试发布npm模块时JS分配失败

我试图发布一个模块: npm publish ./ 遵循这个要点: https : //gist.github.com/coolaj86/1318304 但是当我尝试运行这个命令,我得到以下错误: FATAL ERROR: JS Allocation failed – process out of memory npm进程内存达到了1.2Gb,但是在我的电脑里有更多免费的ram,有什么想法吗?

nodejs内存不足,处理csv文件

我已经阅读了许多有关nodejs内存不足的SO问题,但是我没有看到任何与我的情况类似的东西。 我试图在250个CSV文件中处理大约20GB的数据(所以〜80MB /文件)。 在具有90GB可用内存的服务器上使用节点v5.9.1启动节点脚本–max-old-space-size=8192 。 处理9分钟后,脚本退出,出现内存不足错误。 我是Node编程的新手,但是我认为我编写脚本来一次处理一行数据,而不是把任何东西留在内存中。 然而,似乎有些对象引用正在被某些东西所吸引,所以脚本正在泄漏内存。 以下是完整的脚本: var fs = require('fs'); var readline = require('readline'); var mongoose = require('mongoose'); mongoose.connect('mongodb://buzzard/xtra'); var db = mongoose.connection; db.on('error', console.error.bind(console, 'connection error:')); var DeviceSchema = mongoose.Schema({ _id: String, serial: String }); var Device = mongoose.model('Device', DeviceSchema, 'devices'); function processLine(line) { var serial = line.split(',')[8]; Device({ _id: serial, […]

NodeJS Stream Drain内存不足问题

我有一个问题,试图从elasticsearch检索数据(操作系统Ubuntu,节点v4.2.6,res对象来自明确作为一个可写的stream)。 我没有故意使用elasticsearch.js驱动程序。 如果我使用ES驱动程序,结果保持不变。 这是我的代码: function getNextChunk() { console.log(process.memoryUsage()); console.log("Getting chunks…"); var options = { method : 'POST', url : myHost + '/_search/scroll', json : true, body : { scroll: '60s', scroll_id: globalScope.scrollId }}; request.post(options, function (err, resp, data) { if (err) return console.log(err); if (!data.hits.hits.length) { console.log("Done!"); return res.end(); } if (!res.write(JSON.stringify(data.hits.hits))) res.once('drain', function() { […]

在nodejs中运行mochatesting用例时出现内存不足exception

对于unit testing,我正在使用mocha ,最近在运行testing用例out of memory exception我正在观察out of memory exception — Last few GCs —> 548213 ms: Scavenge 1365.3 (1457.7) -> 1365.3 (1457.7) MB, 1.2 / 0 ms (+ 1.5 ms in 2 steps since last GC) [allocation failure] [incremental marking delaying mark-sweep]. 549442 ms: Mark-sweep 1365.3 (1457.7) -> 1364.3 (1457.7) MB, 1228.6 / 0 ms […]

如何用log4j或winston编写大量的日志? 内存不足

loggingNodeJS 作为nodejs的开端,我写了如下的testing代码。 但内存越来越大,有时甚至没有输出(通过多种方式改变它)。 有2个着名的日志模块, log4js和winston 。 以log4js为例。 1. main.js (function(){ "use strict"; let log4js = require("./log4js-config.js"); let logger = log4js.getLogger("log4js_main"); for(let i = 0; i < 10000000 ; i++){ logger.log("info", "info message " + i + "."); } })(); 2. log4js-config.js module.exports = (function(){ "use strict"; let Log4js = require("log4js"); Log4js.configure( { "appenders" : [ […]

在Node.js中,如何检测v8堆的使用情况已接近极限

现在我用: const v8 = require('v8'); let heap = v8.getHeapStatistics(); let usage = 100 / heap.heap_size_limit * heap.used_heap_size; if (usage > 90) { console.log(`V8 heap usage close to the limit (${usage.toFixed()}%)`); } else if (usage > 95) { console.log(`V8 heap usage very close to the limit (${usage.toFixed()}%)`); } 此解决scheme不正确的工作。 当我尝试这个命令:node –max-old-space-size = 100 index.js我的进程由于无法分配内存而下降,当我的脚本计算~56% getHeapStatistics().heap_size_limit is […]

meteor内存不足

我使用meteor来做报废引擎,我必须做一个HTTP GET请求,这给我一个XML,但这个XML大于400个。 我得到一个“内存不足”的例外。 result =Meteor.http.get 'http://SomeUrl.com' 致命错误:JS分配失败 – 进程内存不足 有一种方法可以增加variables的内存限制吗?