0

我们在基于 Java EE 的应用程序中使用 Mongo DB。根据我们应用程序的架构,Mongo DB 通过不同的线程不断更新(保持 Mongo DB 始终忙碌)。

因此,Mongo DB 一直忙于读取、写入和更新。

我们有一个担忧。我们观察到的是,当 Mongo DB 处于其 peek 利用率时(通过toplinux 中的命令知道),来自 Mongo DB 的读取会获取错误的值。

有时这是可重现的,有时则不是,这取决于负载。

请让我们知道如何解决此问题。

4

1 回答 1

1

由于使用 SlaveOk:true 时 mongoDB 中的异步复制,您还从辅助节点读取,但数据肯定不存在。特别是当你有很大的负载时,网络上的复制会变慢,这称为复制滞后,你可以检查它:http://docs.mongodb.org/manual/reference/method/db.printSlaveReplicationInfo/#db。 printSlaveReplicationInfo

如果您使用 slaveOk : false 关闭从辅助节点的读取,您的应用程序将从主节点读取,以减少在这种情况下使用分片的负载,并且如果您有适当的复制结构,则不必担心主节点会出现故障,一个辅助节点将接管。

于 2013-01-29T05:29:25.140 回答