javascript - Node.js 上的 Express.js 是否存在内存泄漏?

标签 javascript node.js express memory-leaks

我一直在 heroku 服务器上运行的 node.js 上使用 express 进行一个简单的项目。当我开始使用 new relic 来监控内存时,我注意到一个缓慢的内存泄漏模式。我删除了我开发的所有代码和所有其他 Node 模块,只留下表达自己和新的遗留模块。我仍然观察到内存泄漏。 我想知道这是否是 express.js 内存泄漏。 Here is the graphic from new relic

这是剩下的所有代码:

require('newrelic');
var express = require('express'); 
var app = express();
var env = process.env.NODE_ENV || 'development';
if ('development' == env) {
    app.set('port', process.env.PORT || 3000);
}
app.get('/', function ( req, res ) {
    res.send('The server is up and running!');
});
app.listen(app.get('port'), function() {
    console.log('Express server listening on port %d in %s mode', app.get('port'), app.get('env'));
});

和 package.json

{
  "name": "memleakdebug",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.11.2",
    "newrelic": "^1.16.2"
  }
}

更新 1: 现在,不断增长的内存甚至超过了 heroku 的免费层 512MB 限制。 垃圾收集似乎不起作用。

Memory keeps growing

最佳答案

正如 Lasse 所回答的,New Relic 中存在内存泄漏。

https://discuss.newrelic.com/t/memory-leaking-only-with-node-js-agent-installed/14448

我试验并删除了

require('newrelic');

正如您在下图中所见,由于我删除了 New Relic 代理,因此不再有内存泄漏。

enter image description here

关于javascript - Node.js 上的 Express.js 是否存在内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28604238/

相关文章:

javascript - 尝试使用 jQuery 设置 Text-Shadow 属性

node.js - 记住一个值

node.js - 转发到另一个路由处理程序而不在 Express 中重定向

javascript - 如何在按钮单击时显示 html 内容,而不是使用 angularjs 创建像向导一样的新选项卡?

javascript - 流类型注释: why `ClassName<{}>` ?

javascript - Nock 不拦截 http 请求

node.js - 如何在 Alexa Skill lambda 函数中正确指定 SSML?

node.js - 如何更改 NodeJS 请求流响应

javascript - 如何迭代创建记录集合并一次呈现所有记录?

javascript - 在 Android 上长按时禁用上下文菜单