Ruby on rails 在rails应用程序中优化MongoDB驱动程序性能
我使用上面的代码连接到配置为三个不同节点的副本集的MongoDB数据库。对索引字段进行查询。我注意到:connect选项设置为:direct时,性能更好,因为没有自动发现。但是当设置为:replica_set时,性能会下降到>12000 ms。实际上有一个节点不可用。是否有任何方法可以改进我的配置(如上所述),以使用:connect=>:replica\u set选项而不是:connect=>:direct选项实现更好的性能。任何其他性能改进提示都将不胜感激。此外,我必须补充的是,查询的每个文档都很大,平均值为15707.931229566184,如下面的db.stats命令所示Ruby on rails 在rails应用程序中优化MongoDB驱动程序性能,ruby-on-rails,performance,mongodb,Ruby On Rails,Performance,Mongodb,我使用上面的代码连接到配置为三个不同节点的副本集的MongoDB数据库。对索引字段进行查询。我注意到:connect选项设置为:direct时,性能更好,因为没有自动发现。但是当设置为:replica_set时,性能会下降到>12000 ms。实际上有一个节点不可用。是否有任何方法可以改进我的配置(如上所述),以使用:connect=>:replica\u set选项而不是:connect=>:direct选项实现更好的性能。任何其他性能改进提示都将不胜感激。此外,我必须补充的是,查询的每个文档
client = Mongo::Client.new(hosts.split(","),
:database => "#{database}",
:replica_set => "#{replica_set}",
:connection_timeout => 1,
:socket_timeout => 1,
:wait_queue_timeout => 1,
:connect => :replica_set,
:read => { :mode => :primary_preferred },
:heartbeat_frequency => 1,
:min_pool_size => 3,
:max_pool_size => 20
)
什么样的疑问?查找、更新或插入?只需查找。例如db.collection\u name.find{id:1234}当执行此类语句时,向集群添加节点之类的语句需要时间。但是当设置更改为:connect=>:direct时,添加到集群不会发现所有其他集群。您能否解释一下:direct option的作用,因为它可能也适合我的目的?如果某个节点发生故障,我需要制定一个恢复计划,而不会影响性能。如何设置此配置是我不知道的。任何帮助都将不胜感激
uat-replSet:PRIMARY> db.stats()
{
"db" : "fuse_transactions",
"collections" : 5,
"objects" : 1896978,
**"avgObjSize" : 15707.931229566184**,
"dataSize" : 29797599968,
"storageSize" : 44447108352,
"numExtents" : 114,
"indexes" : 9,
"indexSize" : 242091360,
"fileSize" : 46082293760,
"nsSizeMB" : 16,
"extentFreeList" : {
"num" : 0,
"totalSize" : 0
},
"dataFileVersion" : {
"major" : 4,
"minor" : 22
},
"ok" : 1
}