您当前的位置:首页 > 计算机 > 编程开发 > Java

生产环境下 JAVA 进程高 CPU 占用故障排查

时间:12-14来源:作者:点击数:
城东书院 www.cdsy.xyz

解决过程

1,根据 top 命令,发现 PID 为 2633 的 Java 进程占用 CPU 高达 300%,出现故障。

2,找到该进程后,如何定位具体线程或代码呢,首先显示线程列表,并按照 CPU 占用高的线程排序:

[root@localhost logs]# ps -mp 2633 -o THREAD,tid,time | sort -rn

显示结果如下:

USER %CPU PRI SCNT WCHAN USER SYSTEM TID TIME
root 10.5 19 - - - - 3626 00:12:48
root 10.1 19 - - - - 3593 00:12:16

找到了耗时最高的线程 3626,占用 CPU 时间有12分钟了!

将需要的线程 ID 转换为16进制格式:

[root@localhost logs]# printf "%x\n" 3626
e18

最后打印线程的堆栈信息:

[root@localhost logs]# jstack 2633 |grep e18 -A 30

总结

  1. 先使用 top 命令查询 java 占用 cpu 高的进程
  2. 使用 ps -mp 查找出该进程下里面耗用时间长的线程
  3. 使用 printf "%x\n" 3626 将线程转换为16进制
  4. 使用 jstack 2633 |grep e18 -A 30 使用此命令打印出该进程下面的此线程的堆栈信息
城东书院 www.cdsy.xyz
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐