Arthas使用笔记

Arthas使用笔记

1、监控方法:watch

1)-b 在方法调用前监控,默认false
2)-e 当方法发生异常 ,默认false
3)-s 当方法正常退出 ,默认false
4)-f 当方法退出(包含异常和正常退出),默认true
5)-x [N] 打印属性的深度,默认1(数值越大看到越详细属性数据)

使用条件表达式

watch [类名] [方法名] "{params,target}" "params[0]<0"
watch [类名] [方法名] "{params,target}" 'params[0]=="test"'

检查异常

watch [类名] [方法名] "{params,throwExp}" -e -x 3

根据耗时过滤(单位毫秒)

watch [类名] [方法名] "{params,returnObj}" '#cost>200' -x 3

watch 指定类

watch [类名] [方法名] 'target' // target代表this对象

watch 指定类属性

watch [类名] [方法名] 'target.field_name' // target.field_name代表this对象的属性

2、跟踪方法调用栈及调用时间:trace

跟踪次数限制(接收到结果后退出)

trace [类名] [方法名] -n 1

过滤JDK方法,是否过滤jdk方法,默认true

trace --skipJDKMethod true|false [类名] [方法名]

根据耗时过滤

trace [类名] [方法名] '#cost > 200'

3、反编译类:jad

1)jad 类名称
2)jad --source-only 类名称
3)jad 类名称 方法

4、查找JVM已加载的类:sc

1)sc demo.* 默认打印类名称
2)sc -d 指定类 打印类细节,包括code-source,类specification和类加载器等

5、重新加载类:redefine

加载的类不能修改,增加或删除类的field和方法(包括参数,方法名和返回类型)
如果mc失败,可以在本地编译,然后上载到服务器重新加载
目前redefine和watch/trace/jad/tt冲突,以后将解决这个问题

6、监控方法:tt

以滚动形式(类似top)监控方法的调用情况,包含调用时间,耗时,是否正常返回,是否异常等
tt -t [类名] [方法名]

示例

  1. tt -t *Test print params.length==1
  2. tt -t *Test print 'params[1] instanceof Integer'
  3. tt -t *Test print params[0].mobile=="13989838402"

高级用法

  1. 检查调用上下文
    tt -i <index>
  2. 记录回放
    tt -i <index> -p

注意:

  1. ThreadLocal缺失
  2. 参数已变更

7、仪表盘:dashboard

系统实时统计面板,默认每5秒刷新一次
Thread
Memory
Runtime

8、线程:thread

  1. thread <id>:查看指定线程情况
  2. thread -n <N>:查看前N个最忙线程
  3. thread -b 定位阻塞线程
  4. thread -i <N>:指定取样间隔
  5. thread --state WAITING|BLOCKED|... :根据状态查看线程

9、查看JVM:jvm

10、查看系统属性:sysprop

11、查看JVM环境变量:sysenv

12、日志:logger

  1. 查看系统logger配置
  2. 修改logger等级:logger --name ROOT --level debug

实例:

1、监控方法参数

watch class全限定名称 方法名 "{params,returnObj}"
可增加筛选 'params[0]=="abc"'

2、线上代码增加打印日志
1)反编译:jad --source-only [class全限定名称] > [存放目录][class名称].java
2)修改代码并保存
3)找出classloader:sc -d *[class名称] | grep classLoader
4)编译文件:mc -c [classloader ID] [存放目录][class名称].java -d [存放目录]
5)重新加载类:redefine [存放目录][编译后class]
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 下载arthas-boot.jar: 然后用java -jar的方式启动: 选择一个pid进入(如1): 通过th...
    675ea0b3a47d阅读 5,246评论 2 2
  • Arthas是阿里的一款开源的线上JVM运维工具。开源地址:Github-alibaba/arthas ,最近由于...
    不加糖的开水阅读 1,555评论 0 3
  • 一:简介是Alibaba开源的Java诊断工具Arthas可以帮助你解决: 这个类从哪个 jar 包加载的?为什么...
    陈如烟阅读 461评论 0 0
  • Authas — 开源的java诊断工具 下载安装 authas是一个jar包,可以直接下载后运行 就可以启动起来...
    AlanKim阅读 53,292评论 0 17
  • 渐变的面目拼图要我怎么拼? 我是疲乏了还是投降了? 不是不允许自己坠落, 我没有滴水不进的保护膜。 就是害怕变得面...
    闷热当乘凉阅读 4,570评论 0 13

友情链接更多精彩内容