Tag: 内存

为什么在单个核心机器上启动我的应用程序时会出现多个node.js进程

情况 我实际上分析我的服务器和本地机器上的node.js应用程序的内存优化,发现一些令人困惑的东西。 如果我在本地运行我的应用程序(mac osx)并在系统活动监视器中看到一个进程 – 这就是我所期望的,因为没有使用例如集群启动的subprocess。 但是当我在舞台演出(AWS Ubuntu EC2 Micro Instance)上运行应用程序时,我通过htop看到有五个相关的进程运行我的应用程序,而不是预期的一个进程。 分析 每个进程使用完全相同的内存。 在我看了一下父母出现的过程之后,有一个父母有四个孩子。 我试图杀死一个导致完全崩溃(当没有pm2运行时)的subprocess,所以似乎每个进程都是必需的。 题 为什么操作系统和为什么节点显然需要在Ubuntu系统上有多个进程是有区别的。 感谢任何帮助理解它。

Node.js + Socket.io + Redis应用程序通过PM2大内存占用

我对node.js和socket.io都很陌生,但是我正在尝试构build一个简单的服务来侦听Redis通知(由PHP应用程序提供),并将它们广播给当前login的任何用户,并连接到一个套接字.io空间例如'site_name:user:user_id'。 我有它的工作,但节点应用程序的内存占用迅速变得越来越大,从100mb到200 + MB很快,约100名在线用户和积极浏览,我想知道是否有什么设置错误在这里。 PM2正在处理节点应用程序,而nginx被设置为反向代理。 服务器端: var app = require('express')(); var server = require('http').Server(app); var io = require('socket.io')(server); var redis = require('redis'); var redisClient = redis.createClient(); var allClients = []; server.listen(8890); io.sockets.on('connection', function (socket) { allClients.push(socket); socket.on('subscribe', function(data) { console.log('Joining room', data.room); socket.join(data.room); redisClient.subscribe(data.room); }) socket.on('disconnect', function() { console.log('Disconnect'); var i = allClients.indexOf(socket); delete allClients[i]; […]

增加节点内存

我运行的是Protractor(它使用了使用V8的Node),以便运行一些浏览器testing。 我已经开始得到以下内存错误: 02:34:40.051 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed – process out of memory 02:34:40.051 02:34:40.051 <— Last few GCs —> 02:34:40.051 02:34:40.052 1003893 ms: Scavenge 1397.2 (1458.3) -> 1397.2 (1458.3) MB, 1.1 / 0 ms (+ 59.3 ms in 1 steps since last GC) [allocation failure] [incremental marking delaying mark-sweep]. 02:34:40.052 1004839 ms: Mark-sweep 1397.2 […]

Visual Profiler for Node.js

我已经试过这么 多的节点分析器 ,我已经失去了计数。 我从来没有见过一个分析器给你这个 : 该图显示CPU(顶部和中心)和内存(底部)的秒用法。 我可以点击一个“框架”(一秒的红利)来查看在该框架上执行的function以及分配和释放的内存(GC'd)。 这是Adobe Scout for Flash / AS3。 我需要find一个鬼 (内存泄漏:),我已经成功地使用上述接口数百次,以消除不必要的分配,并debugging为什么内存不应该释放时,应该。 我如何find我的应用程序的哪一部分在视觉时间线上分配内存? 我需要一个时间表来具体查看我的应用程序的哪个部分正在分配内存以及为什么。 现在一切发生得如此之快我不能使用“目前在内存中的对象”面板做任何有用的事情。 比较“堆快照”比使用时间线更困难。 基于networking或应用程序是好的。 我使用Windows 7。

Webpack分析工具的“提示”部分列出了预取build议中的webpack依赖关系

我的webpack构build内存不足,所以我试图使用webpack分析工具进行debugging。 奇怪的是,没有关于预取的提示包含我的项目的代码。 一切都来自node_modules,更具体地说,是webpack模块。 这里有几个例子: 我检查了这个post: 如何使用prefetchPlugin&分析工具优化webpack的构build时间? 但是它并不能真正解释为什么“提示”部分只包含node_modules依赖关系,在读完之后,我仍然不完全确定预取是如何工作的。 在第二个例子中,我会预取inherits_browser.js吗? 如果是这样,webpack怎么知道什么时候预取呢? 编辑:我解决了我的OOM问题,但我仍然好奇为什么分析工具显示这一点。

由于内存不足导致Node.js死亡

我在只有512MB RAM的服务器上运行Node.js 问题是当我运行一个脚本,它会因为内存不足而死亡。 默认情况下, Node.js内存限制是512MB 。 所以我认为使用–max-old-space-size是没用的。 跟随/var/log/syslog : Oct 7 09:24:42 ubuntu-user kernel: [72604.230204] Out of memory: Kill process 6422 (node) score 774 or sacrifice child Oct 7 09:24:42 ubuntu-user kernel: [72604.230351] Killed process 6422 (node) total-vm:1575132kB, anon-rss:396268kB, file-rss:0kB 有没有办法摆脱内存不升级内存? (如使用持久性存储作为额外的RAM) 更新:这是一个使用节点模块请求和cheerio的刮板。 运行时,会打开数百或数千个网页(但不是并行)

我应该为node.js使用哪个渲染/模板引擎?

现在,我在我的节点快递中使用jqtpl。 但是,我的同事说在负载testing中花了很多的内存。 所以: 这是快递或渲染引擎的问题吗? 是否有任何configuration(如视图caching)我应该做的,以减less内存使用情况? 不同的渲染引擎的特点是什么? 如玉,jqtpl,ejs等等 请指教。

在node-memwatch的统计中,estimated_base和current_base是什么意思

我使用node-memwatch来监视节点应用程序的内存使用情况。 简化代码如下 @file test.js var memwatch = require('memwatch'); var util = require('util'); var leak = []; setInterval(function() { leak.push(new Error("leak string")); }, 1); memwatch.on('stats', function(stats) { console.log('MEM watch: ' + JSON.stringify(stats)); console.log('Process: ' + util.inspect(process.memoryUsage())); }); 运行'节点test.js',我得到下面的输出。 MEM watch: {"num_full_gc":1,"num_inc_gc":6,"heap_compactions":1,"usage_trend":0,"estimated_base":8979176,"current_base":8979176,"min":0,"max":0} Process: { rss: 28004352, heapTotal: 19646208, heapUsed: 9303856 } 有谁知道estimated_base和current_base是什么意思? 在页面https://github.com/lloyd/node-memwatch中 ,他们没有详细描述。 问候, 杰弗里

确定NodeJS中RSS内存泄漏的原因

我最近偶然发现从MongoDB迁移到Postgresql后,Node.js应用程序中的内存泄漏。 代码在Node.js v 0.10.x上运行。 代码和它的依赖是100%写在JS中。 我正在使用pg.js模块来访问数据库。 问题是,我看到节点的RSS增长(直到进程崩溃),而不是堆,而不是V8外部存储器(通过–trace_external_memory标志logging)。 这就是为什么没有任何工具在V8堆中发现泄漏正在帮助我。 什么可能是这个内存泄漏的原因? 例如,是否有可能有泄漏相关的Buffer实例不会出现在外部存储器日志?

Nodejs的内存使用情况

我想我有一个内存使用问题。 我有一个node.js服务器: var arcadeGames = require('./server/js/arcade'); var cardsGames = require('./server/js/cards'); 需要从.json数据中导出所需对象的模块 var http = require('http'); var express = require('express'); var app = express(); var server = http.createServer(app); //var io = require('socket.io').listen(server); //var fs = require('fs'); app.get('/specificCategory/:id',function(req,res,next){ switch(req.params.id){ case "Cards": console.log(cardsGames.titles); break; case "Action": console.log(actionGames.titles); break; default: console.log("undefined"); } //var specificCaategory = require('./server/js/'+ req.params.id.toLowerCase()); //var categoryTitlesAndUrlThumbs […]