5

最近、サーバーの設定を変更して、レプリカ セットを含めました。セカンダリ DB は、レイテンシを短縮するために世界中の複数のリージョンに配置されています。問題は、すべての読み取りがセカンダリ サーバーからではなくマスターから行われていると思われることです。マスター DB から遠く離れたサーバーの newrelic で 500 ミリ秒以上のレイテンシーが発生していますが、マスターと同じリージョンにあるステージング サーバーは ~20 ミリ秒です。セカンダリ読み取りまたはニアレストが機能しているかどうか、または設定が欠落しているか間違っているかを確認するにはどうすればよいですか? (SECONDARY_PREFERRED と NEAREST の両方を試しました)

URL:

mongodb://1.1.1.1:27017,1.1.1.2:27017,1.1.1.3:27017,1.1.1.4:27017,1.1.1.5:27017/mydatabase

私のオプションは次のようになります。

"replSet": {
   "rs_name": "myRepSet"
   "readPreference": "ReadPreference.SECONDARY_PREFERRED",
   "read_preference": "ReadPreference.SECONDARY_PREFERRED",
   "slaveOk": true
}

マングースのバージョン: 3.8.x

4

3 に答える 3

3

プロジェクトの問題によると、すべての読み取りがセカンダリ サーバーからではなくマスターから行われるため、最新バージョンにアップグレードするときに読み取り設定が機能していないように見えるgitHubという問題がありました。(mongoose@3.8.1 & mongodb@1.3.23)

コメントによると、古いバージョンにロールバックしてもこの問題は発生しません( mongoose@3.6.4 & mongodb@1.2.14)。読み取りはセカンダリ (コレクション レベル) に移動し始めます。この問題は で修正される予定version 3.8.7です。

同じ問題については、次の問題を参照してください。

https://github.com/Automattic/mongoose/issues/1833 https://github.com/Automattic/mongoose/issues/1895

于 2015-07-16T07:16:12.047 に答える
1

セカンダリ読み取りまたは最も近い読み取りが機能しているかどうかを確認するにはどうすればよいですか?

マシンにアクセスできる場合、どのマシンが照会されているかを確認する簡単な方法は、mongostat. サーバーの1つにログインして実行するだけです

mongostat --discover

これにより、レプリカ セット内の各マシンで実行されている挿入/クエリ/更新/削除に関する基本的な出力が得られます。静かなシステムを使用している場合、クエリがリダイレクトされている場所を簡単に確認できるため、少なくともセカンダリがヒットしているかどうかを知ることができます.

そうでない場合は、ドライバーの設定を調査する必要があります。

于 2015-07-14T23:47:46.970 に答える