waterline.js 是否缓存了集合,如果缓存了,是否会占用大量 ram 来炸毁服务器?

does waterline.js caches the collection and if it does is blowing up the server by taking up alot of ram?

我们最近在我们的一个集合中收集了 13 万份文档。从那时起,我们就面临着 nodejs 更高的内存消耗问题。我们正在使用 sails waterline.js orm 来查询 mongodb。因此,通过水线 api 对 db 进行的任何调用都会触发增量,节点进程会一直消耗 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 开发工具中检查我发现有很多数据库数据加载到内存中(图像中有下划线。那些数据属于不同的 model/collection 称为估计)但我们的端点 /user 从不调用或交互这些模型。所以我想是吃水线还是别的什么。

所以有一个水线映射到用户集合和其他集合,包括那些有这么多数据的集合。删除 User 和其他集合之间的冗余关联修复了内存泄漏。