我有 3 个节点(node2、node4 和 node6)的 replSet。Node2 具有更高的优先级,因此它是 PRIMARY。
我从本地机器连接到主节点(远离所有节点及其本地网络):
mongo --host node2
我插入大文档 1000 次:
var start = new Date()
for (var i = 0; i < 1000; i++) {
db.test.insert(<big_document>)
}
var end = new Date()
print("inserts took " + (end - start) + " milliseconds")
然后我也这样做,但这次连接到 replSet,而不仅仅是单个节点:
mongo --host node2,node4,node6
而这次我只插入 10 个文档,因为我没有一整天的时间。
如果连接到单个节点,1000 个文档需要 17 秒。如果连接到整个 replSet,10 个文档需要 35 秒。
为什么会有这样的差异?当我写入主节点时,它不是也将数据传播到辅助节点吗?(即使我明确地只连接到主要的)
蒙戈 2.4.3
更新:
事实证明,节点上打开了监控,这占用了大部分带宽。关闭时一切都很好。
仍然不知道为什么写入 PRIMARY 节点比写入 replSet 快得多