Jarboot本身是一个启动JAVA进程的工具,同时它还附带了一些调试命令。本文介绍下当Java的服务占用了过高的CPU资源时,该如何进行排查。
如果不借助工具,使用linux和jdk自带命令的话,步骤是这样的:
使用自带的命令,大概要经历以上几个步骤才能最终定位到原因,接下来介绍使用工具的排查方法。
了解Jarboot请见:GitHub推荐Java进程启动器—Jarboot
首先使用Jarboot自带的示例程序模拟下CPU占用过高的情况,将算法执行次数设的较高,间隔设为0,这样执行过程会占用很高的CPU。
示例程序
和上面的前两步一样,首先查出是哪个Java服务,接下来到Jarboot的界面上,选中对应的Java进程。
接下来只需要一条命令,thread -n 3,查看最忙的前3个线程,并打印堆栈,如下图:
查看最忙的前几个线程
相比于不借助工具的更加方便,仅需一条命令就可以定位出哪一行。
如果不是用的Jarboot,还可以使用淘宝的Arthas工具,命令的使用是一样的。