我正在运行MongoDB 2.4.5,最近我开始深入研究副本集以获得某种冗余。
我使用 - replSet 参数启动了相同的mongo实例,并添加了一个Arbiter来运行副本集。发生的事情是写入mongo显着减慢(从15ms到30-60ms,有时甚至在300ms左右)。一旦我在非复制模式下重新启动它,性能就恢复正常了。
我还设置了最新3.0版本的MongoDB,没有数据并运行与之前相同的测试程序,结果非常相似 - 在运行ReplicaSet模式时写入速度至少低了50%。
我在网上找不到这种行为的很多例子,所以我猜我的mongo配置或操作系统配置有问题。
有什么想法吗?谢谢你的帮助。
答案 0 :(得分:2)
听起来您正在使用“副本已确认”写入问题,这意味着在将数据写入主数据库和副本数据之前,操作不会返回。写入操作时可以设置写入操作(来自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),了解不同写入问题的含义,并尝试将其明确设置为已确认。
答案 1 :(得分:0)
好的,问题是C#库。我使用了一个原生的C#驱动程序(即使使用2.4.5 MongoDB也能正常工作)并且性能似乎没有差别。谢谢你的帮助。