我们服务器上的大部分服务和项目都是java的。下面说说如何定位本台服务器cpu100%。
- 先用top命令找到CPU最高的进程。比如找到cpu最高的进程id,记为top_pid。
- 使用top-Hptop_pid查找cpu最多的线程,这里记住最高的线程id,thread_id。
- 现在我们把这些threadids转换成16进制,因为java栈中的threadids都是16进制的,转换后方便我们定位printf"%x "thread_id
- jstacktop_pid,打印出栈,然后用3步找到的16进制线程id找到对应的栈
上面的方法可以帮助我们定位问题,但是4步还是太比较麻烦,我们也可以使用一些更方便的工具来简化定位。
- 使用工具show-busy-java-threads.sh
show-busy-java-threads.sh(https://github.com/oldratlee/有用的脚本)♬使用arthas
https://alibaba.github.io/arthas/index.html