发现问题过程
首先打开项目服务器,此服务器部署了很多项目,看他在没有压力情况下,资源使用率
命令:top
load average:负载也不高
1个进程在运行
zombie:0,没有僵尸进程
2个CPU:user和sys 都不高
mem:还剩2个G,充足
再看进程CPU使用情况:都比较底
但是在观察一段时间返现进程突然升高,然后又降低了
这是怎么回事?
为了进一步查看CPU使用率
命令:mpstat -P ALL 1 观察一段时间
如图,进一步验证了CPU隔断时间就会升高,那是那个进程或线程导致升高呢
命令:pidstat -ut 1,观察一段时间
如图:48秒和59秒分别出现,看到都是进程:10764中的线程:10814,导致CPU升高,所以,定位线程后,下面就需要定位为什么这个线程导致CPU升高
命令:printf "%x\n" 10814(TID)十进制转成16进制
命令:jstack 10764 | grep 2a3e -A 30,如果没有出现多试几次此命令
[adminm@test_tomcat1 ~]$ jstack 10764 | grep 2a3e -A 30
"ContainerBackgroundProcessor[StandardEngine[Catalina]]" #30 daemon prio=5 os_prio=0 tid=0x00007fea0c0c1800 nid=0x2a3e runnable [0x00007fe9ed9d1000]</