更多代码+信息:
https://github.com/expressjs/express/issues/3817
我有一个系统,从文件中解析一些数据,然后通过POST将其发送到expressapi。
api.post('/data', async (req, res) => {
let data = req.body.data;
if (data) {
log.info('Saving data : ' + data.filePath);
let newData = await saveData(data);
log.info('Finished saving data : ' + data.filePath);
res.status(201).json(newData._id);
}
else
res.status(400).end();
});
saveData函数:
async function saveData(d) {
let x = await OtherData.findOneAndUpdate(...);
return Data.findByIdAndUpdate(d._id, d, {new: true, upsert: true});
}
我试过使用chrome调试器,得到的结果是:
大小一直在快速增长,直到达到最大值,然后关闭服务器。而且,一旦我停止发送数据,它并不能立即释放内存,我需要等待几分钟。
谢谢
更新:
-
-
Mongo 4.0.4版
-
-
Express 4.16.4版
我把
saveData
api.post
功能,还是有同样的问题。
现在代码如下:
api.post('/data', async (req, res) => {
let data = req.body.data;
if (data) {
log.info('Saving data : ' + data.filePath);
let x = await OtherData.findOneAndUpdate(...);
let newData = await Data.findByIdAndUpdate(data._id, data, {new: true, upsert: true});
log.info('Finished saving data : ' + data.filePath);
res.status(201).json(newData._id);
}
else
res.status(400).end();
});
我完全删除了与mongoose相关的代码-我只是接收数据并返回一个字符串'received',内存仍然在增长。
可能与:
https://github.com/expressjs/express/issues/3413