• Arthas简单使用


    1. 是什么

    官方文档:https://arthas.aliyun.com/doc/

    Arthas是Alibaba开源的Java诊断工具

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

    2. 安装(包含离线安装)

    https://www.cnblogs.com/shihaiming/p/12945700.html

    安装arthas idea插件
    在这里插入图片描述

    3. 使用

    3.1. 启动arthas

    1. 运行 arthas-boot.jar,会将 java 程序列举出来在这里插入图片描述
    2. 选择需要进入的进程,只需要输入进程前面的数字并回车(以 1 为例)
      在这里插入图片描述

    3.2. 常用命令

    IDEA获取命令方式:

    1. 右键需要操作的方法
    2. 选择 Arthas Command
    3. 选择对应的操作
      在这里插入图片描述

    3.2.1. dashboard

    展示当前进程的信息

    • ID: Java级别的线程ID,注意这个ID不能跟jstack中的nativeID一一对应。
    • NAME: 线程名
    • GROUP: 线程组名
    • PRIORITY: 线程优先级, 1~10之间的数字,越大表示优先级越高
    • STATE: 线程的状态
    • CPU%: 线程的cpu使用率。比如采样间隔1000ms,某个线程的增量cpu时间为100ms,则cpu使用率=100/1000=10%
    • DELTA_TIME: 上次采样之后线程运行增量CPU时间,数据格式为
    • TIME: 线程运行总CPU时间,数据格式为分:秒
    • INTERRUPTED: 线程当前的中断位状态
    • DAEMON: 是否是daemon线程
      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hnsYijjc-1660185864038)(https://doc.sensorsdata.cn/download/attachments/255102029/image2022-5-4_21-57-49.png?version=1&modificationDate=1651672669000&api=v2)]

    3.2.2. jad

    反编译 class
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SH8sL01M-1660185864038)(https://doc.sensorsdata.cn/download/attachments/255102029/image2022-5-4_22-5-27.png?version=1&modificationDate=1651673128000&api=v2)]

    3.2.3. monitor

    方法执行监控

    • timestamp:时间戳
    • class:Java类
    • method:方法(构造方法、普通方法)
    • total:调用次数
    • success:成功次数
    • fail:失败次数
    • rt:平均RT
    • fail-rate:失败率
      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NASV6OTc-1660185864039)(https://doc.sensorsdata.cn/download/attachments/255102029/image2022-5-4_22-21-43.png?version=1&modificationDate=1651674103000&api=v2)]

    3.2.4. watch

    观察指定函数的调用情况。能观察到的范围为:返回值抛出异常入参

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JXwYwd9O-1660185864039)(https://doc.sensorsdata.cn/download/attachments/255102029/image2022-5-4_22-7-16.png?version=1&modificationDate=1651673236000&api=v2)]

    3.2.5. trace

    方法内部调用路径,并输出方法路径上的每个节点上耗时

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FGPj50vx-1660185864039)(https://doc.sensorsdata.cn/download/attachments/255102029/image2022-5-4_22-16-45.png?version=1&modificationDate=1651673805000&api=v2)]

    3.2.6. stack

    输出当前方法被调用的调用路径:当一个方法被执行的路径非常多,或者你根本就不知道这个方法是从那里被执行了,此时你需要的是 stack 命令

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bXTSmHUP-1660185864040)(https://doc.sensorsdata.cn/download/attachments/255102029/image2022-5-4_22-30-36.png?version=1&modificationDate=1651674636000&api=v2)]

    3.2.7. tt

    方法执行数据的时空隧道,记录下指定方法每次调用的入参和返回信息,并能对这些不同的时间下调用进行观测

    1、记录下当前方法的每次调用环境现场

    • INDEX:时间片段记录编号,每一个编号代表着一次调用,后续tt还有很多命令都是基于此编号指定记录操作,非常重要。
    • TIMESTAMP:方法执行的本机时间,记录了这个时间片段所发生的本机时间
    • COST(ms:方法执行的耗时
    • IS-RET:方法是否以正常返回的形式结束
    • IS-EXP:方法是否以抛异常的形式结束
    • OBJECT 执行对象的hashCode():,注意,曾经有人误认为是对象在JVM中的内存地址,但很遗憾他不是。但他能帮助你简单的标记当前执行方法的类实体
    • CLASS:执行的类名
    • METHOD:执行的方法名

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qlZ3TMUO-1660185864040)(https://doc.sensorsdata.cn/download/attachments/255102029/image2022-5-4_22-40-32.png?version=1&modificationDate=1651675232000&api=v2)]

    2、查看调用信息:对于具体一个时间片的信息而言,你可以通过 -i 参数后边跟着对应的 INDEX 编号查看到他的详细信息

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vSg9prju-1660185864040)(https://doc.sensorsdata.cn/download/attachments/255102029/image2022-5-4_22-44-58.png?version=1&modificationDate=1651675498000&api=v2)]

  • 相关阅读:
    【Python】安装autopep8包,并在PyCharm中进行配置,以PEP8规范排版代码
    挂靠资质施工,可否要求发包人支付工程款
    java开发技巧
    如何解决msvcp110.dll丢失问题,分享5个有效的解决方法
    TypeError: res.data.map is not a function微信小程序报错
    LVS-NAT模式实验案例
    行为型:迭代器模式
    使用 PMML 实现模型融合及优化技巧
    祥云杯2022 pwn - protocol
    设备零部件更换ar远程指导系统加强培训效果
  • 原文地址:https://blog.csdn.net/qq_44002865/article/details/126280770