遇到问题:凌晨收到报警,某mongodb服务器cpu load超过8。由于没有影响到业务,第二天一早开始查原因。

查原因:

1. 先了解该服务器上的应用有哪些

该db服务器主要应用只有mongodb。于是开始查询mongodb日志:

通过凌晨的日志mongodb.log查看,有大量的慢查询,但实际上这些表都非常小,只有几百行数据,而且表还有索引,却仅仅一个查询花了60~80s,慢查询之后的日志显示该节点不被其他节点检测到(mongodb复制集形式)。

由于一个小表的查询都需要判断70s左右,而且mongodb部署的是复制集形式(其他的查询节点都是正常的)可以判断,可能是这台db的性能方面影响了mongodb,而非mongodb本身的性能影响。

2. 于是查看凌晨有什么任务再跑。

crontab -l 发现确实凌晨有一个任务。是一个切割日志的脚本。大概就是把日志cp到另一个目录,然后将当前日志清空,继续记录新的一天的日志。

但这个日志平时都较小,也运行了很长时间.只能试一试的看看日志目录

看到日志突然就这么大了。难道是因为晚上cp 文件的时候导致了?

差不多判断问题出现在 cp导致了io负载过高,进而导致了cpu load 过高。

3. 复现问题

由于该操作在夜间操作,未影响线上业务。故手动操作cp,复现问题。

cp 了一个近3g的文件, 如下图:看到产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。

跟着cpu load也 上升到10 (每一分钟的cpu load 值)左右。

解决问题:

将较大的日志从mongodb服务器分离出。

将小日子日志脚本切割改为系统logrotate切割。logrotate会在系统空闲的状态进行操作。

可是为什么拷贝了一个3g的文件,就会导致cpu load 高达10. 进而导致mongodb查询性能直线下降。

于是我们联系了某云,一个普通云盘的性能怎会如此低!

以上查问题的思路,最开始也没有很顺利。起初文件较小并没有猜测到是日志拷贝。查问题的时候不能以惯性思维排除。

一个cp命令引发的mongodb大量慢查询相关推荐

  1. linux系统编程:自己动手写一个cp命令

    cp命令的基本用法: cp 源文件 目标文件 如果目标文件不存在 就创建, 如果存在就覆盖 实现一个cp命令其实就是读写文件的操作: 对于源文件: 把内容全部读取到缓存中,用到的函数read 对于目标 ...

  2. 每天一个linux命令(8):cp 命令

    cp命令用来复制文件或者目录,是Linux系统中最常用的命令之一.一般情况下,shell会设置一个别名,在命令行下复制文件时,如果目标文件已经存在,就会询问是否覆盖,不管你是否使用-i参数.但是如果是 ...

  3. 【每天一个 Linux 命令】Linux命令ls和cp

    ls(英文全拼:list files)命令用于显示文件目录列表,和Windows系统下DOS命令dir类似.当执行ls命令时,默认显示的只有非隐藏文件的文件名.以文件名进行排序及文件名代表的颜色显示. ...

  4. linux命令 复制文件夹命令行,(转)每天一个linux命令(8):cp 命令,复制文件和文件夹...

    场景:自动部署脚本中为了部署方便,将配置文件放在服务器端,每次部署都使用服务端的配置文件覆盖上传上去的配置文件. cp命令用来复制文件或者目录,是Linux系统中最常用的命令之一. 一般情况下,she ...

  5. linux cp拷贝一个文件到另一个目录,cp命令复制文件夹到另一个文件夹的注意事项 - 翟码农技术博客...

    最近发现之前写好的shell脚本里cp命令拷贝文件夹,丢失了一层文件夹.才发现cp命令里还有一层这么容易让人混淆的用法,为避免继续踩坑,特此记载. 现在假定文件存在的目录如下面所示: --from - ...

  6. 每天学一个 Linux 命令(89):alias/unalias

    点击下方"民工哥技术之路",选择"设为星标" 回复"1024"获取独家整理的学习资料! 命令简介 alias 命令用来设置指令的别名. un ...

  7. Linux---scp、cp命令

    scp就是secure copy,一个在linux系统下用来进行远程拷贝文件的命令.cp命令和其相似,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的. cp - 主要是用于在同一台电脑 ...

  8. 谈谈Linux系统CP命令如何做到0.2秒复制100G大文件?

    谈谈Linux系统CP命令如何做到0.2秒复制100G大文件? 文章目录 谈谈Linux系统CP命令如何做到0.2秒复制100G大文件? cp 引发的思考 文件系统 为什么 cp 那么快? 结语 cp ...

  9. linux cp 目录不存在自动创建,关于linux:Linux技巧cp命令自动创建不存在的目录和只复制修改的文件...

    复制时主动创立不存在的子目录 在 Linux 中,能够应用 cp 命令的 --path 选项指定在复制的时候主动创立不存在的子目录. 例如执行上面的命令: $ cp --path java/com/s ...

  10. ubutun:从共享文件夹拷贝文件尽量使用cp命令而不是CTRL+C/V

    为了方便,VBOX安装的Ubuntu,并在硬盘上创建了一个与Windows的共享文件夹sharefolder方便在两个系统之间传文件 但是经常发现的问题就是从sharefolder中拷贝文件到ubun ...

最新文章

  1. java培训:什么是抽象类?怎么定义?
  2. Docker 简介以及构架剖析
  3. 【 转 】Keepalived工作原理
  4. java平均差_如何做好描述统计分析
  5. sklearn自学指南(part31)--半监督学习
  6. java没有对象可以调用方法吗_在没有括号的情况下调用Java中的新对象的方法:操作顺序违规?...
  7. ubuntu 搜狗安装搜狗输入法(fcitx)亲测有用
  8. FreeRTOS+STM32F103串口通信错误解决方法
  9. 芦溪中学2021高考成绩查询,2021萍乡市地区高考成绩排名查询,萍乡市高考各高中成绩喜报榜单...
  10. Android MediaCodec硬编码H264文件(四)
  11. ApplePay 支付开发
  12. 2019.7月面试题总结(三)
  13. Relatively Prime Graph(贪心+注意数据范围)
  14. 平面设计构成原理分享
  15. 数学物理方法 数学物理方程
  16. 鸿蒙os系统测评,鸿蒙OS 2首批评价出炉,看已升级用户都怎么说的
  17. 使用ajax技术对内容进行修改,使内容回显到组件框中
  18. 【Linux】嵌入式Linux系统的移植(上篇:交叉编译器、连接方式)
  19. 【C语言】实现两个字符串的连接(不使用库函数),即把字符串b连接到字符串a后面。
  20. Linux运维基础进阶——PPT汇总

热门文章

  1. Atitit 数据处理查询 中的异常标准化草案 jpa jdbc hb  oql规范attilax总结
  2. atitit.验证码识别step2------剪贴板ClipBoard copy image图像 attilax总结
  3. atitit. java跟php的比较..为什么大企业喜欢java 而不是php
  4. paip.手写OCR识别方法总结--基于验证码识别... 1
  5. paip. VS2010版本控制tfs使用总结
  6. paip.asp vbs的代码折叠代码结构查看
  7. 基金公司十大非货规模逆袭(2010-2020)
  8. (转)黑石帝国崛起的30年
  9. 快讯丨业界首本云网络图书发布
  10. 性能优化:缓存使用的秘密