我们在基于Java EE的应用程序中使用Mongo DB。 根据我们应用程序的体系结构,Mongo DB通过不同的线程不断更新(使Mongo DB始终处于忙碌状态)。
因此,结果Mongo DB一直忙于读取,写入和更新。
我们有一个担忧。我们观察到的是,当Mongo DB处于窥视利用率(在linux中通过top
命令已知)时,来自Mongo DB的读取将获取错误的值。
有时这是可重现的,有时不是,它取决于负载。
请告诉我们如何解决此问题。
答案 0 :(得分:1)
由于在使用SlaveOk时在mongoDB中进行了异步复制:true,您也可以从辅助节点中读取数据,但数据当然不存在。特别是当您有大负载时,网络上的复制可能会变慢,称为复制延迟,您可以使用以下命令进行检查:http://docs.mongodb.org/manual/reference/method/db.printSlaveReplicationInfo/#db.printSlaveReplicationInfo
如果您使用slaveOk关闭来自辅助节点的读取:false,您的应用将从初选中读取,以减少此情况下的负载使用分片,并且如果您具有适当的复制结构,则不必担心主要应用程序接管。