我需要一些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