每个请求的 Node/Express 内存都会增加

rob*_*kos 5 node.js express

我有一个简单的express 3.2应用程序,在发布时返回200。我观察节点(v0.10.5)进程的内存 RSS,每个请求都会增加 4kb 左右的内存。

服务器代码非常简单:

var express = require('express');

var app = module.exports = express();

app.set('port', process.env.PORT || 3000);
app.use(express.favicon());
app.use(express.bodyParser());

require('./apps/events/index')(app);

app.listen(app.get('port'), function(){
  console.log("Express server starting...");
});
Run Code Online (Sandbox Code Playgroud)

对应的控制器代码为:

// ./apps/events/index.js
var events = function(app) {

  app.post('/events', function(req, res) {
    res.writeHead(200);
    res.end();
  });

}    
module.exports = events;
Run Code Online (Sandbox Code Playgroud)

我的代码中有什么东西导致了这个问题吗?这是正常的吗(希望不是)。或者我测量的是错误的东西?我将此脚本的一个版本投入生产,节点进程以 16mb 内存使用量启动,经过一些负载测试(20,000 次点击)后,它增加到 32mb。

Noa*_*oah 6

继续分析您的服务器。您可能会发现内存使用量随着时间的推移而趋于平稳。尝试 200,000 个请求,看看情况是否发生变化

此外,如果有可用内存,操作系统将尝试使用它。32MB 的 RAM 还不够担心。

这篇演讲值得一看。它是关于 python 的,但概念与 Node.js 相同

  • 你是对的。我每分钟都会向服务器发出 10,000 个请求,尽管它确实增加了内存直到 60mb 标记,但之后它仍保持在该水平(或多或少有几个 mb)。 (2认同)