推荐一个生产环境问题排查利器( 二 )


  • grep——搜索满足条件的结果
  • plaintext——将命令的结果去除颜色
  • wc——按行统计输出结果
后台异步任务当线上出现偶发的问题,比如需要watch某个条件,而这个条件一天可能才会出现一次时,异步后台任务就派上用场了,详情请参考这里
使用 > 将结果重写向到日志文件,使用 & 指定命令是后台运行,session断开不影响任务执行(生命周期默认为1天) jobs——列出所有job kill——强制终止任务 fg——将暂停的任务拉到前台执行 bg——将暂停的任务放到后台执行
Web Console通过websocket连接Arthas 。
Web Console
其他特性
  • 异步命令支持
  • 执行结果存日志
  • 批处理的支持
  • ognl表达式的用法说明
5、命令详细(1)jad反编译已加载类的源码
jad 命令将 JVM 中实际运行的 class 的 byte code 反编译成 java 代码,便于你理解业务逻辑;
  • 在 Arthas Console 上,反编译出来的源码是带语法高亮的,阅读更方便
  • 当然,反编译出来的 java 代码可能会存在语法错误,但不影响你进行阅读理解
class-pattern 类名表达式匹配[c:] 类所属 ClassLoader 的 hashcode[E] 开启正则表达式匹配,默认为通配符匹配1、反编译指定方法
jad 类的全限定名 方法例如:
  • 反编译某个类

推荐一个生产环境问题排查利器

文章插图
 
  • 反编译某个类的某个方法

推荐一个生产环境问题排查利器

文章插图
 
(2)watch方法执行数据监测
让你能方便的观察到指定方法的调用情况 。能观察到的范围为:返回值、抛出异常、入参,通过编写 OGNL 表达式进行对应变量的查看 。
参数:
class-pattern 类名表达式匹配method-pattern 方法名表达式匹配express 观察表达式condition-express 条件表达式[b] 在方法调用之前观察[e] 在方法异常之后观察[s] 在方法返回之后观察[f] 在方法结束之后(正常返回和异常返回)观察[E] 开启正则表达式匹配,默认为通配符匹配[x:] 指定输出结果的属性遍历深度,默认为 1这里重点要说明的是观察表达式,观察表达式的构成主要由 ognl 表达式组成,所以你可以这样写"{params,returnObj}",只要是一个合法的 ognl 表达式,都能被正常支持 。
「1、观察方法出参和返回值」
$ watch com.liusy.arthas_demo.controller.ArthasController test "{params,returnObj}" -x 2
推荐一个生产环境问题排查利器

文章插图
 
「2、观察方法入参」
$ watch com.liusy.arthas_demo.controller.ArthasController test "{params,returnObj}" -x 2 -b
推荐一个生产环境问题排查利器

文章插图
 
「3、同时观察方法调用前和方法返回后」
$ watch com.liusy.arthas_demo.controller.ArthasController test "{params,returnObj}" -x 2 -b -s 
推荐一个生产环境问题排查利器

文章插图
 
「4、调整-x的值,观察具体的方法参数值」x表示层级数
$ watch com.liusy.arthas_demo.controller.ArthasController test "{params,returnObj}" -x 3 
推荐一个生产环境问题排查利器

文章插图
 
「5、条件表达式的例子」
$  watch com.liusy.arthas_demo.controller.ArthasController test "{params, returnObj}" "params[0].id == 1" -x 2
推荐一个生产环境问题排查利器

文章插图
 
只有满足条件的调用,才会有响应
「6、观察异常信息」
$ watch com.liusy.arthas_demo.controller.ArthasController test "{params, throwExp}"  -e -x 2 「7、按照耗时进行过滤」
$ watch com.liusy.arthas_demo.controller.ArthasController test "{params,returnObj}" #cost>200 -x 3 


推荐阅读