快速写入MongoDB控制台,慢速ReplSet

时间:2014-06-17 05:43:55

标签: mongodb database-performance database-replication mongoengine

我有一个三节点MongoDB副本集。

如果我通过命令行写入主节点,它会很快完成(<1秒)。

如果我通过MongoEngine写入副本集,则需要永久(> 45秒)!

我在日志中看不到任何异常 - 只是成功连接。

最终显示数据,但每个节点的连接都是阻塞的。

示例插入(控制台):

start db 2014-06-17 07:34:10.771450
end db 2014-06-17 07:34:10.777390

示例插入(replset):

start db 2014-06-17 07:34:10.771450
end db 2014-06-17 07:34:50.883062

连接字符串(MongoEngine):

db.connect('app', host='db1, db2, db3', username='app', password='abcdef', port=27017, replicaSet='rs0')

我尝试完全禁用writeConcern,但这没有帮助。

如果我删除了replicaSet参数(但保留了三个主机),它会立即加速并按预期进行数据同步。

可能导致这种情况的原因是什么?如果我离开replicaSet,我会遗漏任何内容吗?

1 个答案:

答案 0 :(得分:1)

您需要确保使用replicaSet连接,并更改为URI格式:

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]

确保您在选项集中有replicaSet option

最后,确保可以从应用程序服务器访问所有replicaSet主机。