CPU load过高排查及应对

一个人想着一个人 提交于 2020-02-22 15:05:16

CPU load介绍

load是通过top命令查看的,是最近1分钟、5分钟和15分钟的系统平均负载。

那何为系统平均负载?正常范围又多少呢?

系统平均负载:是一段时间内(对应上面1、5、15)准备好运行和运行中的进程合计。

正常范围:load的正常范围是小于或等于CPU核数,也就是说每个机子都是可能是不一样的。

CUP核数查询: cat /proc/cpuinfo| grep "cpu cores"| uniq

CPU load过高排查

  1. 通过命令 ps ux 找到cpu占用率过高的进程。
  2. 查看对应java进程的每个线程的CPU占用率。通过命令:ps -Lp pid(进程id) cu
  3. 追踪线程内部,查看load过高原因。通过命令:jstack lwp(线程id)。
  4. 将进程id转为16进制,找出对应线程。

到这里为止如果是想排查Java线程的问题就够了。一般导致CPU load升高的原因是 full GC 次数的增大和死循环。

但是实际场景中,还有其他原因可能造成CPU load 升高,比如:数据库、OS层面的问题等。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!