我们最近在我们的一个系列中交换了130K文件。从那时起,我们面临着更高的nodejs内存消耗问题。我们使用sails waterline.js orm来查询mongodb。因此,通过水线api对数据库进行的任何调用(例如Model.create
)都会触发增量,并且节点进程会持续消耗ram直到~1.8GB然后它会爆炸并重新启动。我试图调整过去一周的问题。我找不到任何解决方案。请帮忙。
当我删除所有收集数据时,服务器不显示任何内存消耗。但是,带回130K文档会再次引发问题。
对于前 - 我有一个用户注册端点/user
它会在行中调用以下模型
let user = await User.create(data);
let model2 = await Model2.create(userdata);
let model3 = await Model3.create(model2Data)
let model4 = await Model4.create(data2);
请注意,所有这些模型都没有太多数据。具有130K数据的模型是不同的模型。
我接受了以前和以后的节点vm.状态的堆转储。在chrome dev工具中检查我发现有很多db数据被加载到内存中(在图像中加下划线。这些数据属于不同的模型/集合,称为估计)但我们的端点/user
从不打电话或互动那些模特。所以我想它是水线或其他东西。
因此,有一个水线映射到用户集合和其他集合,包括具有如此多数据的集合。删除用户和其他集合之间的冗余关联修复了内存泄漏。