Node.js 上的 Express.js 是否有内存泄漏?
Does Express.js on Node.js have a memory leak?
我一直在 heroku 服务器上的 node.js 运行 上使用 express 进行一个简单的项目。当我开始使用 new relic 来监控内存时,我注意到一个缓慢的内存泄漏模式。我删除了我开发的所有代码和所有其他节点模块,只留下表达自己和新的遗留模块。我仍然观察到内存泄漏。
我想知道这是否是 express.js 内存泄漏。
这是剩下的所有代码:
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"
}
}
UPDATE1: 现在不断增长的内存甚至超过了 heroku 的免费层 512MB 限制。
垃圾收集似乎不起作用。
正如 Lasse 所回答的,New Relic 中存在内存泄漏。
https://discuss.newrelic.com/t/memory-leaking-only-with-node-js-agent-installed/14448
我试验并删除了
require('newrelic');
如下图所示,由于我删除了 New Relic 代理,因此不再有内存泄漏。
我一直在 heroku 服务器上的 node.js 运行 上使用 express 进行一个简单的项目。当我开始使用 new relic 来监控内存时,我注意到一个缓慢的内存泄漏模式。我删除了我开发的所有代码和所有其他节点模块,只留下表达自己和新的遗留模块。我仍然观察到内存泄漏。
我想知道这是否是 express.js 内存泄漏。
这是剩下的所有代码:
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"
}
}
UPDATE1: 现在不断增长的内存甚至超过了 heroku 的免费层 512MB 限制。 垃圾收集似乎不起作用。
正如 Lasse 所回答的,New Relic 中存在内存泄漏。
https://discuss.newrelic.com/t/memory-leaking-only-with-node-js-agent-installed/14448
我试验并删除了
require('newrelic');
如下图所示,由于我删除了 New Relic 代理,因此不再有内存泄漏。