一个cp指令引发的mongodb很多慢查询51CTO博客 - 超凡娱乐

一个cp指令引发的mongodb很多慢查询51CTO博客

2019年03月04日15时35分31秒 | 作者: 永昌 | 标签: 一个,查询,日志 | 浏览: 1807

遇到问题:清晨收到报警,某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查询功能直线下降。

所以咱们联系了某云,一个一般云盘的功能怎会如此低!


以上查问题的思路,最开端也没有很顺畅。起先文件较小并没有猜测到是日志复制。查问题的时分不能以惯性思想扫除。

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表超凡娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章