MongoDB 在副本集模式下插入速度变慢

MongoDB inserts slow down when in Replica Set mode

我正在 运行ning MongoDB 2.4.5,最近我开始研究副本集以获得某种冗余。

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

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

我在网上找不到很多此类行为的示例,所以我猜我的 mongo 配置或 OS 配置有问题。

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

听起来您正在使用 "replica acknowledged" 写关注,这意味着该操作不会 return 直到数据已写入主服务器和副本服务器。可以在执行任何写操作时设置写关注(来自2.6 onwards - it looks from the 2.4 documentation that calling getLastError causes a write concern of replica acknowledged in 2.4,你在测试代码中这样做了吗?)。

阅读 MongoDB 文档的 this section (v3)) or this section (v2.4) 以了解不同写入问题的含义并尝试将其明确设置为已确认。

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