私は 3 つの MongoDB ノード (10.66.5.3、10.66.5.4、10.66.5.5) のクラスターを持っています。
ここで、任意に 1 台のマシンをシャットダウンすると、mongoid
gem を介してレプリカ セットにアクセスするときに、すべての db クエリでレイテンシが高くなります (10 秒)。mongo
CLIツールを使用すると、クエリは正常に実行されます。コマンドは正しい情報ですぐに返される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)
- モンゴイド (4.0.0)
- 原付 (2.0.0)