• arthas诊断工具


    1.安装
    linux: curl -o https://alibaba.github.io/arthas/arthas-boot.jar   //是O不是零 浏览直接访问https://alibaba.github.io/arthas/arthas-boot.jar
    在运行程序之前,需要运行一个java进程在内存种
    java -jar arthas-boot.jar
    按序号选择诊断的进程  选择序号回车
    2.卸载
    linux:
    rm -rf ~/.arthas
    rm -rf  ~/logs/arthas
    windows
    C:\Users\admin\.arthas
    C:\Users\admin\logs/arthas
    3.启动demo
    cd ~/.arthas/lib/3.6.7/arthas/
    java -jar math-game.jar
    启动
    java -jar arthas-boot.jar
    端口号被占用
    java -jar arthas-boot.jar  --telnet-port 9998 --http-port -1
    4.基础命令
    exit/quit        //退出不断开连
    stop         //停止完全退出
    dashboard   //打开虚拟机内存仪表板   q ctrl+c 都可以退出
    =============================
    dashboard  模块内容
    ID  //运行的所有线程
    memory  //内存使用情况
    runtime   //jvm运行状态
    =============================
    thread   //查看线程
    thread 1  //查看ID为1的线程信息
    jad 包名.类名  //反编译
    watch    包名.类名  方法名  返回值     //监测    watch demo.MathGame primeFactors returnObj
    =======================
    help  //查看所有命令的帮助信息
    cat    //显示某个文件内容
    cls   //清屏
    grep  // 显示某个文件的字符串    参数:-n //显示行号   -i  //忽略大小写查找   -m 行数   //最大显示行数  -e "正则表达式"  //使用正则表达式查找
    sysprop  //显示所有信息
    pwd   //显示当前的工作目录路径
    ======================
    session  //查看当前会话的信息
    reset  类名  //将arthas增强的类还原,服务器关闭所有增强也会重置   参数: 类名    *List    不带参数还原所有
    version  //加载当前artchas版本号
    history  // 显示所有的执行命令
    keyma[  //展示所有快捷键
    ctrl+c  //终止当前命令
    ctrl+z  //挂起当前命令   bg/fg 重新支持此命令 或者kill掉
    ctrl+a //回到行首
    crtl+e //回到末尾


    =====================

    5.jvm 命令
    dashboard  //仪表板

     


    thread      //线程信息  参数:id  //查看线程     -n 3 //查看当前最忙的几个线程   -b  //找出当前线程阻塞其他线程的线程
      -i 200  //指定cpu采样的时间间隔毫秒 

    --state waiting //查看所有等待的线程


    jvm         //查看JVM虚拟机信息
    sysprop    //查看和修改系统信息       sysprop KEY VALUE  //修改      sysprop KEY //查看
    =====================
    sysenv    //查看当前Java环境属性
    vmoption   //查看JVM虚拟机参数     vmoption KEY VALUE  //修改   vmoption KEY //查看
    getstatic   类名 属性  //查看静态的类和静态的属性   getstatic  demo.MathGame  random
    ognl   express   -c  -x //ognl  语法     express  //执行的表达式   c: 执行表达式的类加载器,默认是系统类加载器  x num:结果对象展开层次
    ===========================
    ognl '@demo.MathGame@random'  //获取静态属性
    ognl '#value1=@System@getProperty("java.home"),#value2=@System@getProperty("java.runtime.name"),{#value1,#value2}'  
    ===========================
    6.类和方法的命令
    sc  // 搜索类和子类支持模糊匹配  参数:  类名 方法名  -d //输出类的详细信息     -E   //开启正则表达式匹配默认开启   -df  //输出类的成员变量信息    sc demo.*/sc -df demo.*
    sm   //搜索类方法     参数:  类名 方法名  -d //输出方法的详细信息     -E   //开启正则表达式匹配;默认开启           sm 类名
    jad          全类名   [方法] //字节码文件反编译      -E   //开启正则表达式匹配默认开启     jad --source-only demo.MathGame >/root/MathGame.java    编辑java 文件
    mc            全路径/类名.java //源代码编译成字节码    -d 指定编译目录   //编译到           mc  /root/MathGame.java   -d  /root
    redefine      类名.class//把新生的字节码在内存中运行                                       redefine /root/demo/MathGame.class
    ======================
    7.高级命令
    dump   //将已加载的字节码文件保存到 logs/arthas/classdump/  
    参数:类名    
    -c: 执行表达式的类加载器,默认是系统类加载器  
    -E   //开启正则表达式匹配默认开启   
    dump  java.lang.string
    =========================
    classload  //获取类加载器信息  
    参数: -l /按类加载器进行统计   
    -t  //打印所有类加载器继承树  
    -a //列出所有类加载器加载的类谨慎使用  
     -c hashcopde //找类加载器在哪个jar包  
     -c hashcopde
     -r  java.lang.string   //获取某个资源在哪个jar包    
     -c hashcopde -load  java.lang.string  //加载一个类到内存中
    ========================
    monitor   //监视指定类中方法的执行情况  
    参数:类名 方法名   
    -E//开启正则表达式匹配;默认开启   
    -c 120  //统计周期   [c:],意思是统计周期(cycle of output),拥有一个整型的参数值    统计周期,默认值为120秒
    monitor  demo.MathGame primeFactors -c 5
    ==============================
    watch    //观察指定方法的调用情况   
    参数:类名class-pattern 方法名 method-pattern
    express //观察表达式   
    condition-express //条件表达式   
    -b //方法调用之前观察  
    -e //方法异常之后观察
    -s  //方法返回之后观察   
    -f  //方法结束之后观察   
    -E //正则    
    -x //指定输出结果属性遍历深度 默认1   
    -n 2 //执行次数  
    watch   demo.MathGame primeFactors "{params,target,returnObj}"  -x 2  -b -s -n 2
    =============================
    trace //对方法内部路径进行追踪 并输出方法路径每个节点耗时  
    参数:类名 方法名   
    condition-express //条件表达式    
    -n 2 //执行次数    
    -E //正则   
    '#cose' //耗时时间筛选    
    trace  demo.MathGame primeFactors -n 2
    trace  --skipJDKmethod false  demo.MathGame primeFactors -n 2  'cose>.5'


    ============================
    stack  //输出当前方法被调用的路径  
    参数:类名 方法名   
    condition-express //条件表达式    
    -n 2 //执行次数   
    -E //正则
    ============================
    tt  //时间隧道记录指定方法调用的入参和返回信息,并能对这些不同时间下调用的信息进行观测
    参数: 类名 方法名
     -t  //记录某个方法在一段时间的调用
     -l         //显示所有已记录的列表
     -n  次数      //只记录多少次
     -s  表达式//搜索表达式
     -i  索引号//查看指定索引号的详细调用信息
     -p           //重新调用指定索引号时间碎片
    ===========================
    options  //全局设置
    ===========================
    profiler  命令  [命令参数]//火焰图  profiler start/list/getSamples/status/stop

     

     

     

  • 相关阅读:
    如何在linux定时备份opengauss数据库(linux核心至少在GLIBC_2.34及以上)
    什么叫 “雪碧图”?
    百度云原生数据库GaiaDB的HTAP与多地多活技术实践
    Spring常考知识点(IOC、事务、容器等)
    IP&TCP知识
    【SQL自学打卡|DAY17】——多表查询
    【技巧】Ubuntu临时授予用户sudo权限,并在一定时间后自动撤销
    云存储空间的动态分配技术
    FA-Phe-Gly-Gly,64967-39-1
    大厂面试-好未来一面算法之求最长无重复子串长度
  • 原文地址:https://blog.csdn.net/weixin_73510682/article/details/127999482