linux 进程占用cpu 特别高查看线程信息的方式

1 top 打开以后使用交互命令 P  获取占用cpu 最高的进程。

2.1 使用 top -H -p <pid> 查看这个进程的执行线程 

在使用P 交互命令 可以看到是哪个线程 占用cpu 过高,获取到线程ID。

2.2 使用  ps -T -p <pid>查看线程信息

“SID”栏表示线程ID,而“CMD”栏则显示了线程名称。

2.3  使用  ps -Lf <pid> 查看线程信息
UID        PID  PPID   LWP  C NLWP STIME TTY      STAT   TIME CMD
work      4551 22670  4551  2    7 16:30 pts/2    Sl+    0:02 ./ad_preprocess
work      4551 22670  4552  0    7 16:30 pts/2    Sl+    0:00 ./ad_preprocess
work      4551 22670  4553  0    7 16:30 pts/2    Sl+    0:00 ./ad_preprocess
work      4551 22670  4554  0    7 16:30 pts/2    Sl+    0:00 ./ad_preprocess
work      4551 22670  4555  0    7 16:30 pts/2    Sl+    0:00 ./ad_preprocess
work      4551 22670  4556  0    7 16:30 pts/2    Sl+    0:00 ./ad_preprocess
work      4551 22670  4557  0    7 16:30 pts/2    Sl+    0:00 ./ad_preprocess

2.4 java进程查看线程信息:

1)top -H -p <pid> 查询出的高cpu  threadid

2)jstack <pid>   >>a.txt导出线程栈

3)  echo “obase=16; <TID>” | bc      将线程ID转换为16进制,大写转换为小写,TID 就是线程ID

4)在a.txt结果里 搜索 步骤三中生成的16进制线程ID ,查看对应线程信息

2.5 java 进程查看线程信息

1)获取线程信息,并找到占用CPU高的线程

ps -mp pid -o THREAD,tid,time | sort -rn 

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

printf "%x\n" tid

3)打印线程的堆栈信息

jstack pid |grep tid -A 30

猜你喜欢

转载自blog.csdn.net/xiaoliuliu2050/article/details/86646540