CPU load过高排查及应对

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层面的问题等。

你可能感兴趣的:(CPU load过高排查及应对)