【问题标题】:Bitnami Mongodb ReplicaSet Set Issue on MS Azure - Secondary node late responseMS Azure 上的 Bitnami Mongodb ReplicaSet 设置问题 - 辅助节点延迟响应
【发布时间】:2016-11-30 13:25:20
【问题描述】:

我在 Azure 上创建了带有副本集的 Mongodb。我有 Rails 应用程序在公共 IP 上命中副本集。我的副本集有 1 个主节点和 2 个辅助节点。我正面临来自辅助节点的响应极度滞后,但主节点对 isMaster 请求的响应非常快。

辅助节点的查询花费了很多时间

COMMAND 数据库=admin 命令={:ismaster=>1}

Mongoid 4.0.1 Rails 4.2.5

为什么 mongodb 调用辅助节点?如果它正在调用我很好,但为什么它需要这么多时间来保持我的应用程序请求大约 12 秒(每个辅助节点 6 秒)。

提前感谢您的帮助。

Sharing application log 如下

我,[2016-11-30T11:27:05.351584 #11924] INFO -- : 2016-11-30 11:27:05 +0000 开始 GET "/" for 175.100.138.183 我,[2016-11-30T11:27:05.352680 #11924] INFO -- : WelcomeController#index 处理为 HTML 我,[2016-11-30T11:27:05.352786 #11924] INFO -- : 参数:{"request_client"=>"production_abc_io", "client_database"=>"localhost"}

// 这个对主节点的调用返回快速响应 D,[2016-11-30T11:27:05.356846 #11924] DEBUG -- : MOPED: 10.0.0.4:27017 COMMAND database=admin command={:ismaster=>1} 运行时间:0.6903ms

//对辅助节点的调用大约需要 6 秒 D,[2016-11-30T11:27:11.356397 #11924] DEBUG -- : MOPED: 10.0.0.5:27017 COMMAND database=admin command={:ismaster=>1} 运行时间:5999.3523ms

//对另一个辅助节点的调用大约需要 6 秒 D,[2016-11-30T11:27:17.356509 #11924] DEBUG -- : MOPED: 10.0.0.6:27017 COMMAND database=admin command={:ismaster=>1} 运行时间:5999.8489ms

D,[2016-11-30T11:27:17.357908 #11924] 调试 -- : MOPED: replica_set_public_ip:27017 QUERY database=localhost collection=clients selector={"_id"=>BSON::ObjectId('55e9a684747265a004000000' )} flags=[:slave_ok] limit=0 skip=0 batch_size=nil fields=nil 运行时间:1.1453ms

D,[2016-11-30T11:27:17.360061 #11924] DEBUG -- : MOPED: replica_set_public_ip:27017 QUERY database=localhost collection=base_users selector={"$query"=>{"client_

【问题讨论】:

    标签: ruby-on-rails mongodb bitnami mongoid4 mongodb-replica-set


    【解决方案1】:

    默认情况下,所有读取操作都会路由到主节点,除非您更改了read preference 参数。这个参数可以解释为什么主节点调用辅助节点。

    为了弄清楚为什么对辅助节点的查询很慢,您可以查看位于“/opt/bitnami/mongodb/logs/mongodb.log”的 mongodb 日志。也许那里有一些信息。

    此外,您可以使用mongotop 命令监控每个集合的基本使用统计信息,并使用mongostats 命令监控基本 MongoDB 服务器统计信息。

    【讨论】:

    • 我的默认阅读偏好为 read: primary。我检查了 mongodb.log。但不幸的是,没有任何问题的线索。我很难猜出是谁以及为什么调用辅助节点。我们可以在配置文件中指定哪个是master,这样它就不会在每个请求的节点上调用isMaster吗?
    猜你喜欢
    • 1970-01-01
    • 2017-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-25
    相关资源
    最近更新 更多