我有一个三节点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
,我会遗漏任何内容吗?
答案 0 :(得分:1)
您需要确保使用replicaSet连接,并更改为URI格式:
mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
确保您在选项集中有replicaSet option。
最后,确保可以从应用程序服务器访问所有replicaSet主机。