Arthas快速入门

Arthas快速入门

1.概述

Arthas(阿尔萨斯) 能为你做什么?

Arthas快速入门Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱。

当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:

  1. 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
  2. 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
  3. 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
  4. 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
  5. 是否有一个全局视角来查看系统的运行状况?
  6. 有什么办法可以监控到JVM的实时运行状态?
  7. 怎么快速定位应用的热点,生成火焰图?

运行环境要求

Arthas支持JDK 6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断


2.快速安装

2.1 在线安装(Linux也可以这样安装)–推荐

  • 1.下载jar包
curl -O https://alibaba.github.io/arthas/arthas-boot.jar
  • 2.运行
java -jar arthas-boot.jar
Arthas快速入门
image

注:在运行第2条命令之前,先运行一个java进程在内存中,不然会出现找不到java进程的错误Arthas快速入门注意:如果cmd是管理员权限运行arthas-boot,那么IDEA启动也是要管理员运行程序

  • 3.查看安装好的目录

C:Usersadmin.arthaslib3.7.2arthas
Arthas快速入门
image

2.2. 离线安装

  • 1.从Maven仓库下载全量包
curl -O -L https://maven.aliyun.com/repository/public/com/taobao/arthas/arthas-packaging/3.7.2/arthas-packaging-3.7.2-bin.zip
  • 2.解压后,在文件夹里有arthas-boot.jar,直接用java -jar的方式启动

java -jar arthas-boot.jar

注意:如果是Linux,可以使用以下命令解压到指定的arthas目录

unzip -d arthas arthas-packaging-3.7.2-bin.zip

发现解压后内容和在线按照内容一致Arthas快速入门

3. 卸载

3.1. 在 Linux/Unix/Mac 平台

删除下面文件:

rm -rf ~/.arthas/
rm -rf ~/logs/arthas

3.2. Windows平台

直接删除user home下面的.arthaslogs/arthas目录

  • 1.安装主目录Arthas快速入门
  • 2.日志记录目录

Arthas快速入门
image

4. 快速入门:attach一个进程

步骤

1. 准备代码

以下是一个简单的Java程序,每隔一秒生成一个随机数,再执行质因数分解,并打印出分解结果。代码的内容不用理会这不是现在关注的点。

public class MathGame {
    private static Random random = new Random();
    public int illegalArgumentCount = 0;

    public List<Integer> primeFactors(int number) {
        if (number < 2) {
            ++this.illegalArgumentCount;
            throw new IllegalArgumentException("number is: " + number + ", need >= 2");
        }
        ArrayList<Integer> result = new ArrayList<Integer>();
        int i = 2;
        while (i <= number) {
            if (number % i == 0) {
                result.add(i);
                number /= i;
                i = 2;
                continue;
            }
            ++i;
        }
        return result;
    }

    public static void main(String[] args) throws InterruptedException {
        MathGame game = new MathGame();
        do {
            game.run();
            TimeUnit.SECONDS.sleep(1L);
            System.out.println("在main函数中循环体内");
        } while (true);
    }

    public void run() throws InterruptedException {
        System.out.println("-- 计算中的函数 -- ");
        try {
            int number = random.nextInt() / 10000;
            List<Integer> primeFactors = this.primeFactors(number);
            MathGame.print(number, primeFactors);
        }
        catch (Exception e) {
            System.out.println(String.format("illegalArgumentCount:%3d, "this.illegalArgumentCount) + e.getMessage());
        }
    }

    public static void print(int number, List<Integer> primeFactors) {
        StringBuffer sb = new StringBuffer(number + "=");
        for (int factor : primeFactors) {
            sb.append(factor).append('*');
        }
        if (sb.charAt(sb.length() - 1) == '*') {
            sb.deleteCharAt(sb.length() - 1);
        }
        System.out.println(sb);
    }
}

注意:上面代码实际上就是math-game.jar代码

Arthas快速入门
image

2. 启动Demo

  • 1.jar包运行

java -jar arthas-demo.jar
  • 2.或者idea运行步骤一代码

Arthas快速入门
image

3. 启动arthas

  • 1.因为arthas-demo.jar进程打开了一个窗口,所以另开一个命令窗口执行arthas-boot.jar

  • 2.选择要粘附的进程:arthas-demo.jar

  • Arthas快速入门
  • 3.如果端口号被占用,也可以通过以下命令换成另一个端口号执行

java -jar arthas-boot.jar --telnet-port 9998 --http-port -1

4. 通过浏览器连接arthas

Arthas目前支持Web Console,用户在attach成功之后,可以直接访问:http://127.0.0.1:3658/。

可以填入IP,远程连接其它机器上的arthas。

Arthas快速入门

如果您觉得本文不错,欢迎关注,点赞,收藏支持,您的关注是我坚持的动力!

转载请注明出处,感谢支持!如果本文对您有用,欢迎转发分享!


原文始发于微信公众号(springboot葵花宝典):Arthas快速入门

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/247151.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!