【问题标题】:Fast writes to MongoDB node, but slow to replSet快速写入 MongoDB 节点,但慢速 replSet
【发布时间】:2013-05-23 12:45:38
【问题描述】:

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

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

Mongo 2.4.3

更新:

事实证明,节点上的监控已打开,这占用了大部分带宽。关机后一切正常。

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

【问题讨论】:

    标签: mongodb database-performance database-replication


    【解决方案1】:

    您可能将副本集的默认 Write Concern 设置为 Replica-Acknowledged。这意味着每个写操作都会阻塞,直到副本集的其他成员确认它为止。当你不需要这个时,你可以使用getLastErrorDefaults(实际上是一个setter方法)来降低replica-sets的默认写关注度。

    【讨论】:

    • 我试过了。我将它设置为 {w:0, j:false, fsync:false},仍然很慢。
    猜你喜欢
    • 2019-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多