问题:CPU偏高是什么原因?怎么分析?
1、use cpu高
现象:压测过程中,使用top命令查看系统资源占用情况,us cpu过高,超过50%以上。
原因:UseCPU偏高说明应用程序本身比较繁忙
排查手段:
(1)使用top命令是哪个进程消耗CPU高
(2)再找到CPU消耗高的线程:top -H -p 进程号
(3)把线程号转换成16进制:printf "%x\n" 线程号
(4)再用jstack命令分析这个线程是在干什么:jstack 进程号 | grep 16进制的线程号
(5)通过JProfiler的CPU Views视图的层层分析,可以清楚的找到造成CPU高的原因
2、system cpu高
现象:压测过程中,使用top命令查看系统资源占用情况,sy cpu过高,超过50%以上。
原因:内核调用,IO导致的,看IO是否使用频繁
排查手段:
(1)首先查看磁盘繁忙程度、磁盘的队列(nmon、sar),查看diskbusy,若diskbusy超过30%以上就可以称作IO繁忙;
(2)IO繁忙的话,查看磁盘中IO的排序队列(iostat),看具体是read还是write繁忙,询问开发人员为什么读/写这么高,找出原因;
读高:大量读取数据造成内存不够引起;
写高:需要减少写的频率;
(3)如果IO不繁忙,也就是磁盘没有问题,则使用strace查看系统内核调用情况,具体内核调用什么比较频繁;
原文:https://www.cnblogs.com/mululu/p/15078329.html