阿里巴巴arthas诊断工具使用介绍

    阿里推出的arthas诊断工具,是专门针对Java程序出现内存泄漏,CPU使用过高,线上问题运行错误进行诊断的工具。它的运行很简单,只需要下载一个arthas-boot.jar的工具包,然后通过java -jar arthas-boot.jar运行即可。一般是在程序执行有异常的那台机器上执行。环境自然是需要jdk支持的。

    这款工具在运行的时候,可以识别java进程,并且可以查看主线程,以及通过反编译查看某个类的源代码,因此在线上排查问题很方便。

   本文基本就是在官方文档的基础上照搬而来。算是自己学习的过程。

   下载arthas-boot.jar

curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar

    可以直接使用arthas提供的产生随机数的示例,这里也可以自己编写一个Java程序来测试。

    Hello.java

public class Hello {

   public static void main(String[] args){
     boolean flag = false;
     while(!flag){

     }
     System.out.println("done.");
   }
}

    编译 javac Hello.java,然后运行 java Hello。

    新开一个终端,运行arthas-boot.jar。

    这一步,会提示用户输入一个数字,默认输入1,指Hello这个java进程,如果有多个java进程,这里选择自己要观察的那个回车即可,之后进入arthas控制台。

     在控制台这里,可以输入很多命令,最基本的dashboard,thread,jad,分别是查看仪表盘,查看线程信息,反编译class看源码。

    输入dashboard之后的界面如下所示:

    在这个仪表盘上,可以看到一个id=1的线程是main主线程,接着,先ctrl+c退出仪表盘界面,可以输入thread 1,查看它的信息(这里的id=1与前面arthas启动之后提示的Hello进程序列号1不是一个意思):

    我们在线上排查问题,有可能发现代码不是我们提交到git仓库中的代码,这时候,需要我们反编译一下类信息,这里可以输入jad Hello:

    有了源码,自然就能知道是否是我们提交的代码,而不用盲目地排错。

猜你喜欢

转载自blog.csdn.net/feinifi/article/details/121417351