一 简介:mongodb 应该如何排查
二 分析角度
   linux 角度
   1 硬件是否有问题 常见主板 raid卡 和raid磁盘组
   2 综合指标 负载
   uptime : 1min 5min 15min
   平均负载的值,取决于系统上处于R状态(running加runnable)和D状态(不可中断睡眠,也就是等待io完成的进程)的个数之和在指定时间段内的平均值。
   分析角度 :负载分为两部分
       1 cpu密集型业务处理,表现形式top 下的cpu使用率 (单进程cpu使用率为使用逻辑核心数X100%)
       2 cpu io 等待,表现形式为top下的iowait较高或者iostat查看磁盘组的util值使用率经常100%
  综合指标 内存
    mongodb VIRT RES
    mongodb占用内存的方式和mysql不同,会几乎把所有内存进行cache缓存
   分析角度: 内存相关问题
    1 内存使用过度,直到占用swap内存,发生oom-killer,选择大容量内存(我碰到过的只有这个)
   综合指标 网卡流量
   网卡流量 一般为千兆网卡,流量报警
  分析角度:
  1 新增节点,进行全量同步,或者进行mongdump.当数据量大时会发生报警
   2 当并发太高,也可能导致发生报警
三 mongo角度
  1 事务语句
       1 短时间内的并发事务操作暴增(insert,update,delete语句)
       2 多库之间的事务操作互相影响
       3 大量db级别的锁等待情况
  2 查询语句
     1 短时间内的并发查询事务
     2 慢语句
     3 其他场景
 四 处理思路
    1 linux 监控收集
       负载 cpu 内存 流量 图进行收集
   2 mongo 监控收集
      connections DML语句波动
   3 实时查看
     1 通过监控和mongostat 收集哪种语句波动较大,定位删/改/插入 类型语句
     2 通过mongotop 收集哪个db读写耗时更高,定位具体业务
     3 通过观察shard.log观察慢语句,定位慢sql本身

4 通过mongostat的faults次数定位是否内存本身存在瓶颈
五 优化
   硬件
     1 选用高内存dell机器
   mongo
     1 优化慢语句(80%场景是慢查询导致的问题)
     2 优化业务逻辑,减少mongo DML的次数
     3 优化业务逻辑,做读写分离策略
     4 优化业务逻辑,增加前端redis缓存
     5 冷热数据分离,减少大表数据量
     6 numtal=all方式启动mongo.不然有可能导致cpu暴涨的问题, 禁用zone_reclaim_mod 参数,在sysctl.conf中设置vm.zone_reclaim_mod=0即可 vm.zone_reclaim_mod=0 意味着可以从其他zone或NUMA节点回收内存
     7 多个业务集中在集群,采取拆分,减少并发
六 总结
   mongo场景发生的故障大部分表现在cpu和内存两方面,大量的操作语句极有可能造成cpu的暴涨

个人经验~mongo故障处理思路的更多相关文章

  1. 个人经验~mysql故障处理思路

    一 简介:个人经验总结 二 思路: 从整体上再进行梳理 三 linux角度 1 硬件是否有问题  常见主板 raid卡 和raid磁盘组 2 综合指标 负载 uptime : 1min  5min  ...

  2. Redis实战 | 持久化、主从复制特性和故障处理思路

    前言 前面两篇我们了解了Redis的安装.Redis最常用的5种数据类型.本篇总结下Redis的持久化.主从复制特性,以及Redis服务挂了之后的一些处理思路. 前期回顾传送门: Linux下安装Re ...

  3. latch: cache buffers chains故障处理总结(转载)

    一大早就接到开发商的电话,说数据库的CPU使用率为100%,应用相应迟缓.急匆匆的赶到现场发现进行了基本的检查后发现是latch: cache buffers chains 作祟,处理过程还算顺利,当 ...

  4. latch: cache buffers chains故障处理总结

    一大早就接到开发商的电话,说数据库的CPU使用率为100%,应用相应迟缓.急匆匆的赶到现场发现进行了基本的检查后发现是latch: cache buffers chains 作祟,处理过程还算顺利,当 ...

  5. Linux运维故障排查思路

    linux系统故障 网络问题 linux系统无响应 linux系统无法启动 linux系统故障处理思路 1.重视报错信息,一般情况下此提示基本定位了问题的所在 2.查阅日志文件,系统日志和应用日志 3 ...

  6. linux操作系统故障处理-ext4文件系统超级块损坏修复

    linux操作系统故障处理-ext4文件系统超级块损坏修复   背景 前天外面出差大数据测试环境平台有7台服务器挂了,同事重启好了五台服务器,但是还有两台服务器启动不起来,第二天回来后我和同事再次去机 ...

  7. 华为云计算IE面试笔记-桌面云用户登录连接流程及故障处理?

    1-10:桌面与系统验证成功                           http协议 11-19:桌面list(VM列表)获取,选择                http协议 20-30: ...

  8. MongoDB 分页查询的方法及性能

    最近有点忙,本来有好多东西可以总结,Redis系列其实还应该有四.五.六...不过<Redis in Action>还没读完,等读完再来总结,不然太水,对不起读者. 自从上次Redis之后 ...

  9. 大公司的PHP面试题

    1. 禁用COOKIE 后 SEESION 还能用吗? 2. 抓取远程图片到本地,你会用什么函数? 4. 你觉得在pV10W的时候, 同等配置下,LUNIX 比WIN快多少? 5. 简述pOST 和G ...

随机推荐

  1. postgresql安装概览

    先从官网下载解压包:https://www.enterprisedb.com/download-postgresql-binaries 这种是解压后,进行配置就可以使用. 另外一种是要用./confi ...

  2. Luogu P3157 [CQOI2011]动态逆序对

    题目链接 \(Click\) \(Here\) 这个题有点卡常数..我的常数比较大所以是吸着氧气跑过去的... 题意:计算对于序列中每个位置\(p\),\([1,p-1]\)区间内比它大的数的个数,和 ...

  3. C++: 带参数回调函数和不带参数的回调函数;

    在C++中,回调函数的应用比较广泛且重要. 通过传递函数指针到其他地方,能够实现远程回调的作用,能够实现远程调用而不需要事件触发信号或者其他机制来实现,方便而快捷: 首先,回调函数有两种形式:  静态 ...

  4. AtomicInteger类的理解与使用

    AtomicInteger类的理解与使用 首先看两段代码,一段是Integer的,一段是AtomicInteger的,为以下: public class Sample1 { private stati ...

  5. Spring Boot学习记录02_构建SpringBoot工程_通过idea构建

    1.通过idea新建工程 2.Initial Service Url指向的地址就是Spring官方提供的Spring Initializr工具地址 3.结合情况进行设置 4.这里我选择的版本是1.5. ...

  6. Sqlserver中的储存过程

    一.什么是存储过程(Stored Procedure) 存储过程是一段存储在数据库的“子程序”,本质是一个可重复使用的SQL代码块,可以理解为数据库端的“方法”. 存储过程的好处: ①提高性能:由于数 ...

  7. centos6.5mini版安装及配置

    1.安装选择界面,这个选第一个 2.镜像完整性检查,一般都是跳过SKIP 3.欢迎界面,进入安装了 4.语言选择,这个是没有中文的,用默认的英文就行 5.键盘布局,用默认的us 6.这里会给一个警告, ...

  8. ELASTICSEARCH 搜索的评分机制

    从我们在elasticsearch复合框输入搜索语句到结果显示,展现给我们的是一个按score得分从高到底排好序的结果集.下面就来学习下elasticsearch怎样计算得分. Lucene(或 El ...

  9. mysql创建用户与pymsql模块

    mysql 创建用户及增删改查 创建mysql 用户 with grant option 表示用户不存在自主创建 grant [ select ……,insert ……| all ] on 库名.表名 ...

  10. 华为平板安装APK,提示“该安装包未包含任何证书”

    有的平板上会有错误现象 打包时签名勾选v1即可.