node.js - MongoDB ChangeStream 导致副本集成员内存不足
问题描述
我们有 1 个副本集的 3 个成员,我们正在使用 node.js 驱动程序和一个像这样实现的 wathcer:
const offerTreeTask = me.mdb.collection('offer_tree');
const offerTreeChangeStream = offerTreeTask.watch([]);
offerTreeChangeStream.on('change', (change) =>
{
me.shouldLoadTree = true;
});
一个简单直接的实现,有 20 个客户端创建了这个观察者。一段时间后发生的情况是副本中的主节点内存不足,无论我们增加多少该机器上的内存,它都会发生。
如果我们删除观察者,那么一切都运行良好。
数据库本身大小为 3GB
我们尝试了 3 种不同的实现,第一个在更改时返回文档(fullDocument),这导致在 8GB 机器上一天内存不足,第二个我们将实现更改为仅通知更改,然后在 2 天后用完,第三个我们试图关闭连接并每 5 分钟重新连接一次,这是最糟糕的,因为它会在半天后用完。
解决方案
推荐阅读
- mysql - 在 MySQL 更新语句中使用 CASE 根据 CASE 条件更新不同的列
- r - R:计算一组变量和参考变量之间的绝对和相对差异
- java - Vertx Hazelcast 集群错误“没有要创建的发现策略工厂...”使用 AWS 加入策略时
- python - 如何找到号码。来自以下代码的特定国家/地区的人?
- c++ - 在向量问题的向量中擦除对象
- c# - Unity如何获取Compoent
() & 获取组件 () 与游戏对象 - python - 通过搜索用户名从文件中获取密码并将该密码存储在变量中
- javascript - 在选定下拉列表的两个值之间计算?
- javascript - 重新编译 build.py 文件时缺少 goog.date 提供程序 - google blockly
- sql - 更改参考数据库表的输入值