0

Java EE ベースのアプリケーションで Mongo DB を使用しています。アプリケーションのアーキテクチャに従って、Mongo DB はさまざまなスレッドを介して継続的に更新されます (Mongo DB を常にビジー状態に保ちます)。

その結果、Mongo DB は読み取り、書き込み、更新で継続的にビジー状態になります。

懸念があります。私たちが観察したことは、Mongo DB がピーク使用率( linux のコマンドで知られているtop)にあるとき、Mongo DB からの読み取りが間違った値をフェッチすることです。

これは再現可能な場合とそうでない場合があり、負荷によって異なります。

この問題に対処する方法をお知らせください。

4

1 に答える 1

1

SlaveOk:true を使用する場合の mongoDB での非同期のレプリケーションにより、セカンダリからも読み取りますが、データはそこに確実に存在しません。特に負荷が大きい場合、ネットワークを介したレプリケーションが遅くなる可能性があります。これはレプリケーション ラグと呼ばれ、http: //docs.mongodb.org/manual/reference/method/db.printSlaveReplicationInfo/#db で確認できます。 printSlaveReplicationInfo

slaveOk : false でセカンダリからの読み取りをオフにすると、アプリはプライマリから読み取り、この場合はシャーディングを使用して負荷を減らします。適切なレプリケーション構造があれば、1 つのセカンダリが引き継ぐので、プライマリがダウンする心配はありません。

于 2013-01-29T05:29:25.140 に答える