分段上传时NodeJS + Express内存泄漏

时间:2015-01-31 13:27:33

标签: node.js memory file-upload express memory-leaks

我真的很惊讶Node + Express在一个非常简单的任务中的行为。

我尝试做的只是通过多部分表单上传文件。 文件上载后,节点内存增加太多(巧合的是大约60 MB,大小与上传文件大小相同)并保持不变,直到重新启动节点进程。我想垃圾收集器应该释放分配的内存,但显然不是。一些信息:

  • 节点v:0.10.33
  • Express v:4.11.1
  • 上传之前节点RAM = 19.9 MB
  • 上传后节点RAM = 79.9 MB
  • 上传的文件大小:60 MB

为了解释这一点,我使用

从头创建了一个Node和Express项目
express -ejs .

我将这个示例项目上传到GitHub(包括node_modules)只是为了澄清并且你有一个快照:https://github.com/CesarTrigo/node-express-memory-leak

正如您所看到的,我创建了两条路线,一条用于表单,另一条用于打印req内容。

var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});

router.post('/upload', function(req, res, next) {
    console.log("/UPLOAD");
    console.log(req);
    res.end();

});

module.exports = router;

所以问题是,在上传10或12次后,Node进程崩溃,因为RAM仍在增加并且内存不足。

我错过了什么?请,欢迎一点帮助!!! 非常感谢你!

1 个答案:

答案 0 :(得分:0)

我猜测图片console.log()的问题。在线我发现其他人提到 console.log() was leaking memory

尝试执行其他操作,例如将其保存到文件中,看看是否会导致您现在遇到的主要内存泄漏。