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层面的问题等。
网友评论