We are using Mongo DB in our Java EE based application.
As per the architecture of our application, the Mongo DB gets continuously updated through different threads (keeping Mongo DB always busy).
So as result Mongo DB is continuously busy with reads, writes and updates.
We have a concern. What we observed is that when Mongo DB is at its peek utilization (known through top command in linux ) , the reads from Mongo DB fetches wrong values.
Sometimes this is reproducible and sometimes not, it depends on the load.
Please let us know how to address this issue.
Due to the replication in asynchronous in mongoDB when you using SlaveOk:true you also read from the secondaries but the data is not certainly present there. Specially when you have big load, the replication over network can slow down, it called replication lag, and you can check it with: http://docs.mongodb.org/manual/reference/method/db.printSlaveReplicationInfo/#db.printSlaveReplicationInfo
If you turn off reading from secondaries with slaveOk : false, your app will read from primaries, to decrease the load use sharding in this case, and have no worries about the primary going down if you have appropriate replication structure one secondary will take over.