Ruby on rails 在rails应用程序中优化MongoDB驱动程序性能

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选项实现更好的性能。任何其他性能改进提示都将不胜感激。此外,我必须补充的是,查询的每个文档

我使用上面的代码连接到配置为三个不同节点的副本集的MongoDB数据库。对索引字段进行查询。我注意到:connect选项设置为:direct时,性能更好,因为没有自动发现。但是当设置为:replica_set时,性能会下降到>12000 ms。实际上有一个节点不可用。是否有任何方法可以改进我的配置(如上所述),以使用:connect=>:replica\u set选项而不是:connect=>:direct选项实现更好的性能。任何其他性能改进提示都将不胜感激。此外,我必须补充的是,查询的每个文档都很大,平均值为15707.931229566184,如下面的db.stats命令所示

    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
}