大家好,欢迎来到IT知识分享网。
https://www.sohu.com/a/348342244_262549
场景一:磁盘读写请求过多
CPU的处理速度要远远超过磁盘的IO速度,所以当线程进行IO操作的时候,CPU就会转而去执行其他的线程或者空闲,而如果这种磁盘IO较多的话,就会使得很多线程都在等待IO而CPU却在空闲。也产生了CPU负载很高而利用率很低的现象。
如果产生了这种情况,可以使用如下两个Linux指令进行排查:
- 通过
top
指令,查看CPU使用情况以及任务的执行情况。 - 通过
ps -axjf
查看是否存在 D+状态的进程。该状态的进程即为不可中断睡眠态进程。
场景二:SQL执行过慢
在实际的生产过程中,大部分的数据都是存储在数据库中, 而数据库中的数据又是写在磁盘中,如果要获取,需要先将数据库中的数据读取到内存中,再进行处理。一旦表中数据量很大又没有索引或者SQL没有走索引的话,就会因为全表扫描而导致IO阻塞。
那么面对这种情况,我们有什么好的解决方法呢:
- 打开慢查询日志:MySQL会将执行较慢的SQL自动记录到慢查询日志中,但是这个功能默认是关闭的,需要手动开启。
关于慢查询日志可以看这篇文章:CPU 使用率低高负载的原因,看看这篇
- 使用
explain
分析查询较慢的SQL,该优化优化,该建索引建索引。
作者:程序源ALEX
链接:https://www.jianshu.com/p/caa07c97d10a
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/31891.html