有天突然收到腾讯云的告警关于cpu
首先使用top命令查询具体进程比较吃cpu
[root@VM-32-6-centos ~]# top
top - 18:09:29 up 124 days, 5:05, 2 users, load average: 5.75, 5.77, 5.57
Tasks: 95 total, 1 running, 94 sleeping, 0 stopped, 0 zombie
%Cpu(s): 93.3 us, 6.7 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 8008956 total, 124800 free, 2470892 used, 5413264 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 5231448 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
11313 root 20 0 5556068 1.9g 14464 S 186.7 24.2 111:01.10 java
10247 root 20 0 755492 15784 2664 S 6.7 0.2 203:00.09 barad_agent
1 root 20 0 43580 2936 1528 S 0.0 0.0 12:11.00 systemd
明显java程序比较吃cpu
然后查看Java程序的进程,找到是那些线程在吃cpu
[root@VM-32-6-centos ~]# jps
11313 hongmeng_autorule-2023-08-08_09_07.jar
# 查看具体线程池cpu
ps p 16494 -L -o pcpu,pmem,pid,tid,time,tname,cmd
# 将线程id转化为十六进制
printf "%x\n" 17417
# 生成jstack文件
jstack -l 16494 > jstack.log
# 线程堆栈
vim jstack.log
找到具体代码
发现这块业务有问题一直死循环查数据库