首先要注意:执行以下命令排查问题的当前账号应该与启动那个进程的账号相同。
否则会报错:pid:Unable to open socket file: target process not responding or HotSport VM not loaded
The -F option can be used when the target process is not responding.
1.如果是排查cpu使用率较高的进程,top查询
top
2.或者是排查指定的进程,首先找到你的进程pid,
ps -ef|grep ngdp #搜索项目pid
3.根据pid,如下面的3958打印出所有线程,找到耗时高的线程 tid
ps p 3958 -L -o pcpu,pid,tid,time,tname,cmd
4.找到要排查的线程id,将十进制转换为十六进制,比如找上图中3970;
printf "%x " 3970 输出结果 f82
5.然后执行命令:jstack -l pid|grep tid -A 10
有问题的线程,会打印出行信息,如下: