Load 就是对计算机干活多少的度量,Load Average 就是一段时间(1分钟、5分钟、15分钟)内平均Load。
一、CPU使用率高、Load average高具体排查方法
1. top 打开以后使用交互命令 P 获取占用cpu 最高的进程。
2. 使用 top -H -p <pid> 查看这个进程的执行线程
top -H -p 7122
3. 使用 ps -T -p <pid>查看线程信息
4. 使用 ps -Lf <pid> 查看线程信息
到这里已经查到具体的线程,以及线程所对应的路径和文件,这时候需要研发一起分析这些启动文件然后定位具体的问题。
5. 如果是java进程导致的CPU和负载过高,可以进一步分析
5.1 首先查看系统资源占用信息,TOP看一下,按大写P
5.2 ps -mp pid -o THREAD,tid,time 查找线程ID
于是可以看到这个进程中有3个线程的CPU占用率很高,并且它们目前也运行了13分钟了,它们的TID分别为16068,16069,16071
5.3 再将这3个TID转为16进制,printf “%x\n” number 为等会在jstack中查找方便,得到这三个数的16进制为别为3ec4,3ec5,3ec7
5.4 jstack查看进程信息
通过jstack -pid 再grep查询
再通过jstack查看详细信息
然后让Java研发工程师查看代码问题,一般是函数或者方法写的有问题,找出占用CPU和负载高的原因。