• Arthas简介及IDEA插件快速入门


    Arthas简介及IDEA插件快速入门

    1. Arthas简介

    ArthasAlibaba开源的Java诊断工具,深受开发者喜爱。

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

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

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

    说了一大堆,其实Arthas最厉害的地方就在于,能够让你在线上环境没有日志的情况下进行调试程序,定位问题。

    2. Arthas快速入门

    1. 首先在IDEA的插件Marketplace中找到arthas idea这款插件,安装;可以点击这里查看插件详情~
    2. 打开线上环境的terminal,执行以下语句
      curl -O https://arthas.aliyun.com/arthas-boot.jar
      java -jar arthas-boot.jar
      
      • 1
      • 2
    3. 然后会出现如下界面
      [INFO] arthas-boot version: 3.6.2
      [INFO] Found existing java process, please choose one and input the serial number of the process, eg : 1. Then hit ENTER.
      * [1]: 592 arthas-boot.jar
       [2]: 1 /data0/www/htdocs/code/lib/XXXXXXX.jar
       [3]: 403 arthas-boot.jar
       [4]: 295 arthas-boot.jar
       [5]: 503 arthas-boot.jar
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
    4. 选择应用的java进程即可;
    5. 比如我的应用的java进程是第2个,则输入2,再输入回车/enterArthasattach到目标进程上,并输出日志:
      [INFO] arthas home: /root/.arthas/lib/3.6.2/arthas
      [INFO] Try to attach process 1
      [INFO] Attach process 1 success.
      [INFO] arthas-client connect 127.0.0.1 3658
       ,---.  ,------. ,--------.,--.  ,--.  ,---.   ,---.                           
      /  O  \ |  .--. ''--.  .--'|  '--'  | /  O  \ '   .-'                          
      |  .-.  ||  '--'.'   |  |   |  .--.  ||  .-.  |`.  `-.                          
      |  | |  ||  |\  \    |  |   |  |  |  ||  | |  |.-'    |                         
      `--' `--'`--' '--'   `--'   `--'  `--'`--' `--'`-----'                          
      
      wiki       https://arthas.aliyun.com/doc                                        
      tutorials  https://arthas.aliyun.com/doc/arthas-tutorials.html                  
      version    3.6.2                                                                
      main_class                                                                      
      pid        1                                                                    
      time       2022-06-30 18:24:02    
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
    6. 然后如何在没有日志的情况下,像在本地一样调试线上的代码呢?首先定位到想要查看的方法(Arthas只支持到方法级别)
      在这里插入图片描述
      在这里插入图片描述
    7. 在想要定位的方法上点击右键,选择Arthas Command,选择Watch
    8. 回到terminal的界面粘贴命令
      [arthas@1]$ watch com.ke.utopia.scs.saas.base.utils.DateUtils transferString2LocalDate '{params,returnObj,throwExp}'  -n 5  -x 3 
      
      • 1
      默认-n 5,代表命令执行最大次数为5次;可以手动更改;
    9. 然后terminal中就会显示该方法的入参和出参,就像在本地调试一样方便~
  • 相关阅读:
    JAVA之Mysql应用|记一次通过mysql表中的三个字段对应一个前端组合状态字段查询场景的解决方案
    【菜鸟入门!】Matlab零基础快速入门教程
    Java面试题200+大全(合适各级Java人员)
    每日一练 | 华为认证真题练习Day19
    【力扣1464】数组中两元素的最大乘积
    TVideoGrabber SDK 15.2.4 add for delphi Crack
    非关系型数据库技术课程 第十一周作业(SpringBoot项目中使用Redis作为数据缓存,Redis的缓存机制,数据一致性、缓存穿透和缓存雪崩等问题的处理)
    QStyleFactor和QPalette
    七年码农路
    Android Studio插件版本与Gradle 版本对应关系
  • 原文地址:https://blog.csdn.net/itigoitie/article/details/125549245