线上CPU很高排查

top命令

可看出PID为7149的java进程占用cpu最高,达到了98%
查看进程中最耗cpu的子线程
top -Hp 7149
将最耗cpu的线程id转换为16进制输出
printf "%x " 7166

为1bfe 

查询具体出现问题的代码位置
jstack 7149 | grep 1bfe -A 30

1、使用sar -d 1 10 查看磁盘读写情况,发现wr_sec 和 rd_sec都是0,说明没啥太大的读写程序在跑

2、然后我们用ps查看下是哪些在跑着的程序占用cpu资源高

ps aux | head -n 1;ps aux| awk '{if($8 == "R") print $0}'|sort -k3 | head -n 10

意思是:正在运行的程序,cpu占用排行靠前的10条信息

可以看到有很多stress这个命令在跑着,这个是压测用的,很奇怪,继续追踪,找出调用这个命令的父程序

ps -ef | grep /usr/local/bin/stress| awk '{print $3}'| xargs ps -f| head -n 10

ps -ef 的第三列就是父程序的pid,然后传给 ps -f去查是什么

原文地址:https://www.cnblogs.com/xuxu-dragon/p/14036050.html