快速写入MongoDB节点,但重新设置缓慢

时间:2013-05-23 12:45:38

标签: mongodb database-performance database-replication

我有3个节点(node2,node4和node6)的replSet。 Node2具有更高的优先级,因此它是主要的。

我从本地计算机连接到主节点(远离所有节点及其本地网络):

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秒。

为什么会出现这样的差异?当我写入主节点时,它是否也将数据传播到辅助节点? (即使我明确地只连接到主要的那个)

Mongo 2.4.3

更新:

事实证明,在节点上开启了监控功能,这些节点占用了大部分带宽。关闭时一切都很好。

仍然不知道为什么写入PRIMARY节点比写入replSet

要快得多

1 个答案:

答案 0 :(得分:0)

您可能将副本集的默认Write Concern设置为 Replica-Acknowledged 。这意味着每个写操作都将阻塞,直到副本集的其他成员已确认它为止。如果不需要,可以使用getLastErrorDefaults(实际上是一个setter方法)降低副本集的默认写入问题。

相关问题