• arthas Can not find tools.jar 使用报错


    原因是没有安装完整的jdk,当然重新安装jdk应该也是可以的,

    另一种方案是,下载一个完整的jdk8,解压到当前目录的 jdk8,使用命令   ./jdk8/bin/java -jar arthas-boot.jar 2404

    就可以了 

    启动:

    java -jar arthas-boot.jar [PID]

    sc 和 sm

    • 通过sc可以查看已加载类的相关信息,比如该类是从哪个jar包加载的,被哪个类加载器加载的,以及是否是接口等等。
    • sm查看已加载类的方法详情。

    监控方法:

    watch

    • 让你能方便的观察到指定方法的调用情况。能观察到的范围为:返回值、抛出异常、入参,通过编写 OGNL 表达式进行对应变量的查看。
    • watch的使用姿势比较丰富,可以在四个不同的场景观察方法的执行。比如方法调用之前、方法调用之后、方法异常之后、方法结束之后。默认观察的是方法结束之后。
    • 如果观察的是方法结束之后的场景,由于入参可能在执行方法时被改变,所以此时输出的可能不是真正的入参。因此,要看真正的入参,要看方法调用之前的,也就是加上-b的参数。
    • 另外,使用-b参数观察的话,则观察不到方法返回的结果以及抛出的异常了。

     

    参数名称	参数说明
    class-pattern	类名表达式匹配
    method-pattern	方法名表达式匹配
    express	观察表达式
    condition-express	条件表达式
    [b]	在方法调用之前观察
    [e]	在方法异常之后观察
    [s]	在方法返回之后观察
    [f]	在方法结束之后(正常返回和异常返回)观察
    [E]	开启正则表达式匹配,默认为通配符匹配
    [x:]	指定输出结果的属性遍历深度,默认为 1
    [n:]	只执行n次,默认会不断输出,除非用户按下cltr+c
    

      

    # 观察CommonTest的test方法
    # 输出 入参、返回结果、抛出的异常 —— 输出的内容可以动态调整
    # 后面跟着的是 条件表达式,表示耗时超过10ms才输出
    # -n 表示只执行一次,-x表示 入参和返回结果的展开层次为5层
    watch *.CommonTest test "{params,returnObj,throwExp}" '#cost>10' -x 5 -n 1
    
    # 耗时大于10ms并且第一个参数等于1才输出
    watch *.CommonTest test "{params,returnObj,throwExp}" '#cost>10 && params[0]==1' -x 5 -n 1
    # 第一个参数大于1 并且第二个参数等于hello才输出
    watch *.CommonTest test "{params,returnObj,throwExp}" 'params[0]>1 && params[1]=="hello"' -x 5 -n 1
    # 第一个参数小于5或者第二个参数等于"world"就输出
    watch *.CommonTest test "{params,returnObj,throwExp}" 'params[0]<5 || params[1]=="wolrd"' -x 5 -n 1
    # 第一个参数的name字段等于world时才输出。
    # 由于在方法执行过程中参数的name属性可能发生改变,因此加上-b才能观察到真正的入参
    watch -b *.CommonTest test "{params,returnObj,throwExp}" 'params[0].name=="wolrd"' -x 5 -n 1
    
    # 由于同时指定了-s和-b,所以方法被调用一次,就会输出2次结果(两个场景分开输出),分别是方法被调用前,和返回之后
    # 注意,这里如果-n只设置成1,那么只会输出-b对应的输出,-s对应的输出由于没有次数了就无法输出了
    watch *.CommonTest test '{params,returnObj,throwExp}' -x 5 -n 2 -s -b
    

      

  • 相关阅读:
    x264参数
    用X264编码以后的H264数据
    (转)YUV420存储格式
    YUV数据YUY2到I420
    udp编程中,一次能发送多少个bytes为好?
    (转)c++多态实现的机制
    linux下ping加时间戳实时输出到文件 放后台运行
    如何向AcmeAir注入问题代码
    AcmeAir
    Jmeter压力测试
  • 原文地址:https://www.cnblogs.com/feiye512/p/12579715.html
Copyright © 2020-2023  润新知