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への書き込みよりもはるかに高速だった理由はまだわかりません