zoukankan      html  css  js  c++  java
  • mongodb系列~故障排查问题

    一 慢日志
    1 分析大于N秒的慢日志
       awk '$NF~/ms$/{print $1,$NF}' shard2.log|sed 's/ms//g'|awk '$2 > N {print $1,$2}'
    2 在线添加索引
    nohup  mongo  --eval " db.chenfeng.ensureIndex({"riqi":1},{background:true})"  &
    3 通过后台日志可以查看到索引进度
    4 kill查询时间超过5s的所有请求:
    db.currentOp().inprog.forEach(function(item){if(item.secs_running > 5 )db.killOp(item.opid)})
    二 整体性能分析
       mongostat  -h  ip:port  -u用户名 -p密码 --authenticationDatabase=admin --discover
       关注指标
       insert/update/delete/query 可以发现是什么操作导致的负载问题
       dirty:存储引擎脏数据比例,wt引擎默认为5% 很高就导致访问过慢 因为要强制刷脏
       used:存储引擎cacheSize配置占用百分比,类似innoodb_buffer_pool使用率 当该统计值达到80%,evict线程将会触发选择涨数据淘汰,如果这个占比提高到95%,用户请求线程将会触发淘汰,客户端请求将会变慢;
       qrw arw:等待队列数,如果该值越大,说明会引起客户端请求排队处理
       vsize res:虚拟内存和物理内存真实占用,如果vsize过高,远远超过res,或者res过高,远远超过cachesize配置,则说明内存碎片,pageheap等问题,这时候可以通过加速         tcmalloc内存释放速率来解决问题。
       mongotop -h ip:port -u用户名 -p密码 --authenticationDatabase=admin --discover
       ns:数据库命名空间,后者结合了数据库名称和集合。
       db:数据库的名称。名为 . 的数据库针对全局锁定,而非特定数据库。
       total:mongod在这个命令空间上花费的总时间。
       read:在这个命令空间上mongod执行读操作花费的时间。
       write:在这个命名空间上mongod进行写操作花费的时间。
        总结 利用mongostat定义什么操作 利用mongotop定义什么文档业务导致的
    三 其他情况
       1 本人遇到过因为numa导致的mongo cpu暴涨情况

  • 相关阅读:
    实现一个简易版的react
    浅学virtualDom和diff算法
    148. 排序链表 归并排序 | 快速排序
    OC中的NSDictionary和NSMutableDictionary
    OC中的block
    OC中的category&Extension
    OC中判断方法是否实现
    OC的分组导航标记
    OC中程序的内存分布&类加载
    OC中的@property和@synthesize
  • 原文地址:https://www.cnblogs.com/danhuangpai/p/14367036.html
Copyright © 2011-2022 走看看