使用jstack查看线程情况解决cpu飙高问题

  当运维同学突然找你说某台服务器cpu突然飙高,这个时候不要着急,使用jstack命令查看某线程的执行情况,找出问题所在。

1.使用top命令,再shift+h,查看线程的挂起时间,如下图线程的pid=184执行时间持续了170分钟,值得怀疑

2.将线程的pid转成16进制,如下图,输出线程pid=184的16进制数,然后使用jstack查看线程情况,发现线程在runnable状态,执行到了checkUtil的123行,查看仓库代码发现这个地方正是一个死循环。

1).printf '%x\n' 184
2).jstack 进程号 | grep -A 10 线程pid的16进制

总结:使用jstack 可以查看堆栈信息,可以精准捕捉到程序的哪一行导致的问题。

posted @ 2020-12-24 17:19  发奋推墙  阅读(451)  评论(0编辑  收藏  举报