输入 sudo -u sankuai -i
输入top 查看cpu使用情况
找到比较高的cpu,拿到对应的进程id (比如这里的java cpu 已经1134%) 『我这里是拿终端尝试的,和美团软件是一样的』
搜索java 进程 里面的线程
top -Hp 14980
查询出来几个cpu比较高的线程
将线程转换成16进制(必须要转)
printf “%xn” tid (tid=线程id)
获得到对应的16进制的线程id后,查看对应的线程堆栈信息
jstack pid | grep tid 「pid 进程id,tid是16进制后的线程id」
找到对应的问题
问题解决:
1.有时间线程id的堆栈信息是查看不了的,因为捕捉不到对应的线程id,会报如下的错误(这个时候你可以仔细去看,对应线程id一直在换,一会你要找的那个线程id就找不到了)
error: -F to force a thread dump. Use when jstack does not respond (process is hung)
这个时候我们可以直接查看java进程的堆栈信息
jstack pid
还可以将堆栈信息打印成一个文件(-l 可以不加)
jstack -l pid > 文件名字
使用cat 命令 或者 less命令进行查看(less 命令 可以模糊查询 「输入/ 然后输入要查找的单词就可以」)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)