第一步:使用top命令查看异常进程信息:
top 命令 找到异常cpu高的PID
各个参数的意思:
PID 进程id USER 进程所有者的用户名 PR 优先级
VIRT 进程使用的虚拟内存总量,单位kb。
RES=CODE+DATA SHR 共享内存大小,单位kb
NI nice值。负值表示高优先级,正值表示低优先级
%CPU 上次更新到现在的CPU时间占用百分比
TIME+ 进程使用的CPU时间总计,单位1/100秒
%MEM 进程使用的物理内存百分比
COMMAND 命令名/命令行
第二步: 通过异常进程号查看异常线程(cpu异常的PID)
top -H -p PID
第三步:通过异常线程定位异常代码
1,将第2步中找到的高CPU占用率线程PID转换成十六进制,
使用printf "%x\n" 线程PID
2, jstack [进程id] |grep -A 10 [线程id的16进制]”
连续几次导出该进程的堆栈信息,在导出的线程堆栈信息文件中搜索,定位异常代码