解决linux cpu占用不高但是负载很高

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决linux cpu占用不高但是负载很高相关的知识,希望对你有一定的参考价值。

参考技术A 客户现场遇到mongodb cpu偶发性占用过高问题,配置16c16g,装了mysql,mongo,influxdb,java等应用,观察到mongodb在更新数据的时候很慢,几秒甚至几十秒。
通过vmstat 1 10发现bi很高达到2w,

top展开cpu发现有几个cpu的%wa经常在100%,初步判断硬盘负载很高,

iostat -x 1 10果然硬盘%util达到100%了

iotop发现mysqld占用大量的io

看mysql的日志,发现有超时查询,加完索引后,系统正常。

回头看mongodb的查询慢、偶发性占用cpu 1600%只是表象,因为mongodb需要往硬盘写数据,这个时候硬盘被mysql占用,导致mongodb线程只能等io,mongodb写硬盘的请求积累,cpu也没释放,故cpu占用率高。

load负载和cpu之间关系:
参考: https://www.cnblogs.com/zhangyjblogs/p/14163576.html

django web应用runserver模式下cpu占用高解决办法

原因

  • 由于Django的dev服务器会定期检查所有Python源文件是否有更改。即使不触摸或修改任何.py文件,它们也会不断重新加载,从而导致CPU和I/O负载很高。

解决办法

  • 通过在 runserver--noreload 可以防止这种自动重新启动机制,从而将空闲负载减少到零.

以上是关于解决linux cpu占用不高但是负载很高的主要内容,如果未能解决你的问题,请参考以下文章

stress-Linux系统压力测试工具使用及系统负载很高的几种场景测试

linux查看cpu占用率

cpu负载突刺问题排查

Linux系统下怎么查看应用CPU、内存、负载?

django web应用runserver模式下cpu占用高解决办法

如何模拟提高服务器的cpu使用率,提高机器负载?