Home  >  Q&A  >  body text

linux - mongodb导致wa增高

我的服务器是centos,安装了mongodb,但是我们服务器不定时会wa增高,导致无法对前端提供服务,top命令后,wa的值涨到20%,而cpu都还好,这方面mongo有什么好的优化吗?

ringa_leeringa_lee2647 days ago340

reply all(2)I'll reply

  • 怪我咯

    怪我咯2017-04-17 15:21:42

    MongoDb一般不会长时间占用IO,我猜测这种情况可能与你某个查询没有写对有关,可能是因为某种情况下触发了一条慢查询,而这条慢查询又挤占了MongoDb大部分的内存缓存的用量,导致这时候大部分查询都要走硬盘IO,才会增加wa的增大。

    reply
    0
  • 巴扎黑

    巴扎黑2017-04-17 15:21:42

    用过一段时间mongo,简单写下debug的过程
    1.mongostat 查看下mongo当前的运行情况,主要关注下flushes、locked db的值,对当前mongo的运行情况有个大致的了解
    2.在mongo shell 使用db.currentOp()查看当前的operation,查看是否有长时间执行的sql,如果有对sql进行explain,看是否有索引、是否走了索引、是否能通过索引就获得查询结果等;
    3.mongo慢的情况一般都是没有建立索引、或者索引建的不恰当造成;由于mongo是在热点数据和索引都在内存中时,性能最好,如果建立太多的索引 也有可能造成查询性能降低,很低,explain发现yeild次数很多或者scan对象特别多;
    4.在生产环境中,使用background:true来建立索引,防止mongo不可用;如果是master-slave的结构,建立索引的操作传递到slave实例上时,有可能不是background的方式建立索引(发生过一次,没有再次确认),所以使用master-slave来做读写分离时,需要关注下slave节点是否正常相应请求。
    就酱

    reply
    0
  • Cancelreply