【问题标题】:MongoDB inserts slow down when in Replica Set modeMongoDB 在副本集模式下插入速度变慢
【发布时间】:2015-08-02 18:07:27
【问题描述】:

我正在运行 MongoDB 2.4.5,最近我开始深入研究 Replica Set 以获得某种冗余。

我用 --replSet 参数启动了同一个 mongo 实例,还添加了一个仲裁器来运行 Replica Set。发生的事情是写入 mongo 的速度显着减慢(从 15 毫秒到 30-60 毫秒,有时甚至在 300 毫秒左右)。一旦我以非复制模式重新启动它,性能就会恢复正常。

我还设置了最新的 3.0 版本的 MongoDB,没有数据并运行与以前相同的测试器,结果非常相似 - 运行 ReplicaSet 模式时写入速度至少慢 50%。

我在网上找不到很多这种行为的例子,所以我猜我的 mongo 配置或操作系统配置有问题。

有什么想法吗?感谢您的帮助。

【问题讨论】:

  • 您是否在写入时传递了任何write concern,即{w: ?, j: ?} 参数?
  • 我使用 C# lib 连接 mongo 并使用 libs native writes

标签: mongodb replicaset


【解决方案1】:

听起来您正在使用“已确认副本”写入问题,这意味着在将数据写入主副本和副本之前,该操作不会返回。可以在执行任何写入操作时设置写入关注点(来自 2.6 onwards - 从 2.4 文档中可以看到 calling getLastError causes a write concern of replica acknowledged in 2.4,您是否在测试代码中这样做?)。

阅读 MongoDB 文档的 this section (v3))this section (v2.4) 以了解不同写入问题的含义,并尝试将其显式设置为 Acknowledged。

【讨论】:

  • 感谢一些有用的链接,它们引导我以最简单的方式测试写入的路径 - 在本地主机和远程使用 JS 脚本。副本集/独立 MongoDB 之间的性能没有差异。所以可能我的问题是由 C# 库引起的,但我也会尝试证明这一点。
  • +1 除了写关注的第二部分是日志设置。值得看看 c# 驱动程序的 write concern 的默认值是什么。
  • 关于日志设置的要点 - 是否有任何特定的副本集影响日志设置,@n9code?​​span>
  • @Mark Hughes 不,日志写入关注点不关心是否存在副本集。
【解决方案2】:

好的,问题出在 C# 库上。我使用了本机 C# 驱动程序(即使使用 2.4.5 MongoDB 也能正常工作),性能似乎没有差异。感谢您的帮助。

【讨论】:

    猜你喜欢
    • 2017-07-20
    • 2012-02-25
    • 1970-01-01
    • 2016-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-07
    • 2023-03-17
    相关资源
    最近更新 更多