CPU使用率高排除方法
- 查询CPU使用率高的进程
- 查询线程CPU使用率
- ps命令方式
- top 命令方式
- 查询线程堆栈
- jstat 查询gc情况
查询CPU使用率高的进程
ps aux --sort=-pcpu | head -10
通过ps指令看到pid=1799程序CPU使用率47.1%,再看看程序的线程使用情况。
查询线程CPU使用率
ps命令方式
排序列出“29116”cpu使用率高的前10名线程
ps -mp 29116 -o THREAD,tid,time |sort -k2,2nr |head -10
ps -mp 29116 -o THREAD,tid,time | sort -rn
top 命令方式
top -p PID
top -p PID:观察该PID对应进程的占用情况。“shift + h” 开启线程显示,观察CPU占用较高的线程
查询线程堆栈
将需要的线程ID转换为16进制格式
printf “%x\n” tid
打印线程的堆栈信息:
jstack pid |grep tid -A 30
jstat 查询gc情况
jstat命令命令格式:
jstat [Options] vmid [interval] [count]
参数说明:
Options,选项,我们一般使用 -gcutil 查看gc情况
vmid,VM的进程号,即当前运行的java进程号
interval,间隔时间,单位为毫秒
count,打印次数,如果缺省则打印无数次
jstat -gcutil 3001 5000 10
每5秒打印一次GC情况,打印10次。