Linux 系统下 cpu 使用率过高的分析方法
1、通过 top 命令可以很明显查看出哪个进程耗cpu比较高
2、 ps -mp 25147-o THREAD,tid,time op -Hp pid找到耗时最高的线程
或者使用:使用 top -H -p <pid> 查看进程里面的线程占用情况
或者在top命令之后使用:shift+h 查看哪个进程程消耗最高
3,将需要的线程ID转换为16进制格式
,
打印堆栈信息
sudo jstack 25147|grep 6268
jstack 3889 > /tmp/aa.txt,将该进程的全部堆栈信息放入临时文件aa.txt里面
总结:
1. 查找进程
top查看进程占用资源情况
明显看出java的那个进程占用过高cpu.
2.查找线程
使用top -H -p <pid>查看线程占用情况
3.查找java的堆栈信息
将线程id转换成十六进制
#printf %x 15664
#3d30
然后再使用jstack查询线程的堆栈信息
语法:jstack <pid> | grep -a 线程id(十六进制)
jstack <pid> | grep -a 3d30
这样就找出了有问题的代码了。