【问题标题】:MongoDB replica set OpLog Gb/Hour increasing rapidly, trying to isolate whyMongoDB 副本集 OpLog Gb/Hour 快速增加,试图找出原因
【发布时间】:2015-04-24 11:29:35
【问题描述】:

问题

MongoDB (v 2.6.6) 三节点副本集 OpLog Gb/Hour 在几天内迅速增长,几个月来一直保持每小时 20mb。我试图找出原因。了解 Oplog.rs 是一个 Capped Collection,这与交易量增加有关,但我发现很难隔离交易量增加的原因。

OPLOG Gb/小时

4 月 2 日 - 11 日 = 每小时 20mb。

4 月 12 日 - 13 日 = 每小时 40mb。

4 月 14 日 - 18 日 = 每小时 50mb。

4 月 19 日 = 每小时 70mb。

4 月 20 日 = 每小时 120mb。

4 月 21 日 = 每小时 180mb。

4 月 22 日 = 每小时 230mb。

4 月 23 日 = 每小时 310mb。

4 月 24 日 = 每小时 650mb。

调试至今

  • 在所有数据库上执行 db.getProfilingStatus()。返回所有数据库:

    {
    "was" : 0,
    "slowms" : 100
    }
    

    “0”正在禁用探查器。

  • 确认增长不是客户数量的同等增长。

  • 查询集合 oplog.rs 到目前为止还没有出现任何明显的模式。开发团队证实,在 16 日更新后,预计不会增加数据的持久性。我没有排除错误,但目前没有明显的异常。

  • DB.local(包含 oplog.rs 集合)中的平均对象大小显示出与 Oplog GB/小时类似的增长模式。很长一段时间都是7.45Kb。现在是 50KB。不确定这是原因还是结果。

如果可能,请寻找可能有助于此隔离过程的更多提示/技巧。

复制 OpLog 窗口从 2 月 22 日的 5300 小时下降到今天的 73 小时。

感谢您的帮助。

【问题讨论】:

  • 请在dba.stackexchange.com 上询问有关 MongoDB 管理而非开发的任何问题。我提名了你的迁移问题。
  • 谢谢 Philipp,对此感到抱歉。 MongoDB 网站似乎将我指向这里。感谢您提出迁移请求。

标签: mongodb


【解决方案1】:

您可以查询 local.oplog.rs,以查看 oplog 中的内容。

我会在 oplog 中检查高于平均对象大小的文档,看看它是如何使用的。

类似:

db['oplog.rs'].find()
    .limit(50)
    .forEach(
        function (x) { 
            if(Object.bsonsize(x) > 70000) 
                print(x);
        }
    );

最好从较小的限制开始,这样您在第一次查询时就不会得到几兆字节。

我的盲目猜测是,您有一些不断增长的文档会被整体查询和更新。

【讨论】:

  • 感谢 Fox 的发帖。 BSON 大小设置为 50000。限制设置为 1000。返回 24 个对象。现在查看结果。
  • 您的查询有助于隔离具有大量 JSON 有效负载的客户端,谢谢。我们可以看到这些客户正在以我们认为正常的运营方式运营。有效负载多次写入一个集合,并在覆盖的基础上缓存在每个对象的集合中。 Oplog 显然必须记录所有这些事务。在有效负载异常的情况下,由于缓存集合写入,Oplog 数据增长会更加复杂。更改已应用,正在等待结果。
  • Oplog /Gb 小时下降。复制 Oplog 窗口增加。 oplog.cs 集合中的 Ave 对象大小丢弃。查明并解决。谢谢,标记为已回答。祝你今天过得愉快。斯科特
猜你喜欢
  • 2023-02-09
  • 1970-01-01
  • 1970-01-01
  • 2016-02-18
  • 2019-05-02
  • 1970-01-01
  • 2010-09-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多