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暴涨情况

上一篇:MongoDB数据库安装与卸载及配置


下一篇:mongodb主从仲裁节点配置