使用NodeJs服务器发送对象大请求时出现内存不足错误

时间:2016-07-19 17:30:36

标签: node.js post memory mongoose out-of-memory

我需要一些NodeJs内存错误的帮助。我已经创建了一个接收Json对象的服务,该对象大于5mb,并将其保存到MongoDB集合中。

我必须将bodyParser.json和bodyParser.urlencoded限制配置为:1024 * 1024 * 50。这样我就可以收到整个json对象了。

我遇到的问题是NodeJs服务器的内存使用量总是增加到1.7 GB的限制,在短时间内发出多个请求时会收到“内存不足”错误,只需3个即可。为什么垃圾收集器每次完成后期操作都不会释放内存?

我收到的错误是:

  

致命错误:CALL_AND_RETRY_LAST分配失败 - 处理完毕   记忆< --- JS stacktrace --->无法在GC中获取堆栈跟踪。致命   错误:清道夫:半空间复制分配失败 - 处理失败   内存工作者4436死于代码:3,而signal:null启动一个新的   worker Worker 3808在线致命错误:CALL_AND_RETRY_LAST   分配失败 - JavaScript堆内存不足

我正在使用的方法代码是下一个:

avail.post('/newAvail', function (req, res) {
    var newAv = new Availabitiy(req.body);
    newAv .save(function(err, newAv ){
        if(req.accepts('json')){
            if(err){
                return res.status(500).json({
                    message : 'Error saving Item',
                    error: err
                });
            }
            return res.json({
                message: 'saved',
                _id: newAv.id
            });
        }else{
            if(err){
                return res.status(500).send('500: Internal Server Error');
            }
        }
    });
});

与mongoDB数据库通信我正在使用mongoose ODM

在post动作结束后,我可以强制NodeJs清理内存吗?

我正在使用的NodeJ版本是:4.4.5

0 个答案:

没有答案