我有一个由 3 个 MongoDB 节点(10.66.5.3、10.66.5.4、10.66.5.5)组成的集群,当所有节点都处于活动状态并且正在运行时,它都运行顺利。
现在,当我任意关闭一台机器时,在通过mongoid
gem 访问副本集时,所有数据库查询都有一些高延迟(10 秒)。使用 CLImongo
工具时查询运行良好。该rs.status()
命令立即返回正确的信息,所以我相信它的 mongoDB 端配置正确。
从pry
控制台运行命令会产生相同的 10 秒延迟。有时查询会在点击 web api 时失败,但我认为这只是超时杀死查询。
这是应用程序的 mongoid.yml。
mock_production:
sessions:
default:
database: project
hosts:
- localhost:27017
options:
read: :primary
replica_set:
database: project
hosts:
- 10.66.5.3:27017
- 10.66.5.4:27017
- 10.66.5.5:27017
options:
read: :primary
write:
w: :majority
如果感觉好像代码每次都在检查集群的状态并在死节点上浪费时间。我做错了什么,我错过了配置选项吗?
我尝试将refresh_interval: 10
(建议在一些在线资源中)添加到集群选项,但它没有做任何事情。
延迟始终是 10 秒,所以我相信可能有一个设置在做一些讨厌的事情。
有什么想法吗?
软件:
- 红宝石 (2.1.5p273)
- 导轨 (4.1.6)
- mongoid (4.0.0)
- 助力车 (2.0.0)