记录一次java程序cpu占用率过高问题排查
一、进入docker(没有docker可以跳过这一步)
docker -ps
## 查看所有的docker镜像
docker exec -it 镜像名称 bash
## 进入docker -i: 打开标准输入接收用户输入命令 -t: 分配伪终端 bash: 以新的bash终端打开
二、使用top命令查看cpu占用率高的java程序
top -d 1 ## -d: 设置查询间隔,以秒计算
如图,查看到一个cpu占用率为508的java程序,记录它的pid。
三、通过ps命令查看该进程的线程情况
ps -mp 记录的pid -o THREAD,tid,time
## -m: 显示所有的执行绪 -p: 指定程序识别码 -o: 指定输出列
可以查看到这个五个线程占用率比较高,记录tid,并将其转化为16进制。
printf "%x\n" 19238 ## 4b26
记录结果。
四、使用jstack命令定位代码位置
jstack 记录的Pid | grep 记录的tid -A 30
如图,我们可以定位到代码位置。