我正在尝试改进我的MongoDB服务器的oplog,因为现在它覆盖的时间比我希望的要少(我现在不打算增加oplog文件的大小)。我发现oplog集合中有许多noops记录-{ "op":"n“}+关于"o”的整个文档。它们可以占用大约20%-30%的物理操作日志大小。
我怎么能找到原因,因为它似乎是不好的?
我们使用的是MongoDB 3.6 + NodeJS 10 + Mongoose
附注:它出现在许多不同的集合和用例中,因此很难理解所有这些项背后的应用程序逻辑。
发布于 2019-12-18 10:39:21
MongoDB 3.4+副本集中应包含无操作写入,以便支持Max Staleness specification,从而帮助应用程序避免从过时的辅助数据库中读取数据,并更准确地衡量复制延迟。这些无操作写入仅在主节点空闲时发生。空闲写入间隔当前不可配置(在MongoDB 4.2中)。
最大陈旧规范包括一个示例场景,以及为什么Primary must write periodic no-ops以及其他设计决策的更详细的基本原理。
以下是设计原理的相关摘录:
空闲的主节点必须每10秒执行一次
-op (idleWritePeriodMS),以使次节点的lastWriteDate值接近主节点的时钟。no-op还使opTimes接近主节点,这有助于mongos在CSRS中选择最新的次节点进行读取。
当虚假延迟峰值得到解决时,像MongoDB云管理器这样绘制复制延迟图表的监控软件也将受益。
https://stackoverflow.com/questions/59269111
复制相似问题