命令记录|arthas

        问题跟踪利器arthas所有命令,黄色划线的是我经常用到的,其中trace、watch、getstatic和ognl四个命令在跟踪问题时候非常强大,本文主要记录部分常用和重要的命令,其他基础命令和出场率不高的命令可以随时在官网查看: 

        具体解释参考以下官网文档,这里只列出我自己常用到的命令,一是系统整理总结经验,二是为了后面查找方便。

arthas官网文档icon-default.png?t=N7T8https://arthas.aliyun.com/doc/commands.html

  1. 确认jvm中运行的class文件是否和预期的一致,反编译class - jad
     jad com.xxx.xxx.Cache xxxMethod
  2. 跟踪方法耗时 - trace
    trace org.apache.commons.lang.StringUtils isBlank  '#cost>100'
  3. 查看方法的入参或返回值信息 - watch
    watch org.apache.commons.lang.StringUtils isBlank '{params, target, returnObj, throwExp}' -x 2
    watch *StringUtils isBlank params[0] params[0].length==1
    watch *StringUtils isBlank params '#cost>100'
    // 根据参数条件watch,注意Long类型要L后缀
    watch com.xxx.xxx.DataService xxxMethodName '{params[2]}' 'params[1].equals(1905187677257728L)' -x 4
    // 当出现异常时watch
    -e XXXException
  4. 查看类变量具体信息或属性 - getstatic
    # 很多缓存信息定义为类变量,可以通过以下方法查看缓存的信息
    getstatic com.xxx.xxx.Cache XxxMap         // 查看全部缓存
    getstatic com.xxx.xxx.Cache XxxMap 'entrySet().iterator.{? #this.key=="9527"}'            // 查看map中某个key对应的entry信息
    getstatic com.xxx.xxx.Cache XxxMap 'size()'    // 查看map大小
    
    
  5. 调用静态方法 - ognl
    ognl '@java.lang.System@out.println("hello")'
    # 通过hashcode指定ClassLoader
    sc -d com.xxx.xxx.XxxService | grep -v hashcode      // 得到ClassLoader的hashcode
    ognl '@com.xxx.xxx.XxxService@setEncodeConf(true)'   // 调用springbean的静态方法修改配置

  6. 查看spring-bean的属性
    ognl -c 7ef20235 '@com.xxx.xxx.common.util.spring.SpringUtil@getBean("serviceName").property'

  7. 通过线程名称确认线程是否存在 - thread
    thread | grep -v 'thread-name'

        对于大部分命令和具体用法,都可以使用-h参数查询使用说明。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值