• arthas-线上排查问题工具


    在线上环境无法通过jprofile监控服务时,我们可以通过arthas来实现监控和使用:
    在这里插入图片描述

    使用

    1、首先要在目标服务器上下载arthas包:

    # 下载:
    wget https://arthas.aliyun.com/arthas-boot.jar
    # 启动:
    java -jar arthas-boot.jar
    
    • 1
    • 2
    • 3
    • 4

    2、随后arthas会打印出当前服务器上的java进程供我们选择,此时我们只需要选择1 回车即可进入到此进程的交互界面
    在这里插入图片描述

    3、输入交互式命令,这里提几个常用的交互式命令:
    3.1、bashboard 命令
    在这里插入图片描述
    在这里插入图片描述

    3.2、help命令
    可以查看arthas所有命令
    在这里插入图片描述

    3.3、tab
    通过tab可以补齐所有命令

    3.4、thread命令
    在这里插入图片描述
    在这里插入图片描述

    3.5、sc
    当我们想看看包里是否有我们新加的class时可以使用此命令
    在这里插入图片描述

    3.6、jad
    当我们想看看改的代码是否生效时,可以用jad反编译后对比
    在这里插入图片描述

    3.7、watch
    这个命令最常用,可以用来查看一个函数调用情况
    在这里插入图片描述
    在这里插入图片描述

    watch在排查函数的入参和输出以及变量十分好用,这里需要着重讲一下:
    watch有观察表达式,默认是{params, target, returnObj},函数的入参、该类的成员变量、函数的返回值

    在这里插入图片描述
    在这里插入图片描述

    这里我们举例说明一下:以pentagon项目为例
    在这里插入图片描述
    在这里插入图片描述

    如上图片显示,我们发现得到的信息并不理想,这是因为我们默认打印的是第一层,这里就涉及到参数-x
    [x:] 指定输出结果的属性遍历深度,默认为 1
    此时我们将 -x 设置为2 看一下:明显发现打印的更多了,但参数中的数组内容依然没有全部打印

    在这里插入图片描述

    试一下-x 3:可以发现数组内容的参数也全部打印出来,十分方便
    在这里插入图片描述

    我们还可以通过 其他表达式来观察方法调用前和调用后
    在这里插入图片描述
    在这里插入图片描述

    再举一个异常排查案例:可以通过 * 来监控一个类的所有函数
    在这里插入图片描述
    在这里插入图片描述

    3.8、stop退出
    只有stop才是真正退出
    在这里插入图片描述

    3.9、sysprop \ sysenv \ jvm
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    此外,arthas支持pipeline,即管道符
    在这里插入图片描述

    代码热更新案例

    https://blog.csdn.net/qq_35128600/article/details/127772552?spm=1001.2014.3001.5501

    docker中使用arthas

    官网:https://arthas.aliyun.com/doc/docker.html

    在docker中使用arthas有三种方式:
    1、在dockerfile中就已经安装了arthas
    2、通过docker exec -it ca4e68524d42 /bin/bash -c “wget https://arthas.aliyun.com/arthas-boot.jar && java -jar arthas-boot.jar” 这种命令进入到容器中现安装
    3、dockerfile里面的服务的jar包本身的maven依赖中就有arthas,直接就可以监控当前服务!
    在这里插入图片描述

    微服务中使用arthas

    主要是通过maven将arthas依赖进工程中,这样在服务启动时就可以自动监控服务
    官网:https://arthas.aliyun.com/doc/spring-boot-starter.html

    Arthas Tunnel

    官网:https://arthas.aliyun.com/doc/tunnel.html
    arthas还支持多服务注册到arthas中心统一管理,采用B/S架构。
    在这里插入图片描述

    支持火焰图

    官网:https://arthas.aliyun.com/doc/profiler.html
    在这里插入图片描述

  • 相关阅读:
    Python小技巧:bytes与str的区别
    一三七、Node koa2 + vue 实现文件分片上传
    《protobuf》基础语法2
    PNA/RNA/DNA修饰方法研究进展
    FreeSWITCH添加自定义endpoint之媒体交互
    每日一题《leetcode-- LCR 025.两数相加||》
    C4D vs Blender:哪个更适合你的需求?
    (附源码)ssm小米购物网站 毕业设计 261624
    厉害!我带的实习生仅用四步就整合好SpringSecurity+JWT实现登录认证!
    Blender做一个小凳子学习笔记
  • 原文地址:https://blog.csdn.net/qq_35128600/article/details/127789712