1、CPU负载和CPU利用率的区别
可以通过uptime,w,top命令查看CPU的平均负载
Load Average:指的是当前系统处于正在运行和等待的进程,3个参数代表系统过去的1分钟,5分钟,15分钟内的系统平均负载
单核cpu负载为1时表示满负载,如4核cpu满负载为4,一般合适为70%,超过之后可能需要排查
CPU利用率:指当前运行进程实时占用CPU的百分比,是一段时间内CPU使用情况的统计
例如
厕所有一个坑位,如果有一个人占用了坑位,这时候负载就是1,如果再来一个人排队负载就是2
在一个小时内,A上厕所用了10分钟,B上厕所用了20分钟,还有30分钟没人用,那么这一个小时的利用率就是50%
2.如果CPU负载很高,利用率很低怎么办?
说明处于等待状态的任务很多,负载越高,代表可能有很多僵死的进程。通常这种情况是IO密集型任务,大量请求在请求相同的IO,导致任务队列堆积。
通过top
命令观察,通过ps -axjf
查看是否有状态为D+
的进程,这个状态指的就是不可中断的睡眠状态的进程。处于这个状态的进程无法终止,也无法自行退出,只能通过恢复其依赖的资源或者重启系统来解决
3、 如果CPU负载很低,利用率很高又怎么办呢?
表示CPU任务不多,但是任务的执行时间很长,很大概率是代码问题,通过top定位到最高的任务进行排查
4、CPU使用率达到100%怎么排查
1)、通过
top
命令找到占用率高的进程
2)、通过
top -Hp pid
找到占用CPU高的线程
3)、再把线程id转化为16进制,
printf '0x%x\n'
pid
4)、通过命令
jstack 163 | grep '转化后的16进制' -C5 --color
或者jstack 163|vim +/转化后的16进制 -
找到有问题的代码
5、Linux常用命令
1)、touch,创建文件
2)、cat,查看文件
3)、tail,查看文件最后多少行