java的cpu使用过高异常排查

java的cpu使用过高异常排查,第1张

java的cpu使用过高异常排查

输入 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 命令 可以模糊查询 「输入/ 然后输入要查找的单词就可以」)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5709556.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存