Arthas线上问题定位工具使用

Arthas线上问题定位工具使用

当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:
这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?

1.安装
curl -O https://arthas.aliyun.com/arthas-boot.jar
2.启动
 java -jar arthas-boot.jar 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rvUxr1P1-1615948356861)(http://showdoc.zhaoshang800.local/server/../Public/Uploads/2020-12-11/5fd3109d1d832.png)]

输入编号进入指定项目

3.反编译源码
jad com.xxxx.web.manager.boot.PartnerWebManagerApplication

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WwfelkLu-1615948356863)(http://showdoc.zhaoshang800.local/server/../Public/Uploads/2020-12-11/5fd31287480fc.png)]

4.查看方法入参,返回值

4.1查看返回值

watch com.xxx.web.manager.controller.ad.config.AdConfigController list returnObj

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yHvrx7Kc-1615948356864)(http://showdoc.zhaoshang800.local/server/../Public/Uploads/2020-12-11/5fd3166cb9121.png)]

4.2查看返回值属性遍历深度

watch com.xxx.web.manager.controller.ad.config.AdConfigController list returnObj -x 3

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vc9SlZCe-1615948356866)(http://showdoc.zhaoshang800.local/server/../Public/Uploads/2020-12-11/5fd3177490718.png)]

4.3同时观察入参和出参

watch com.xxx.web.manager.controller.ad.config.AdConfigController list {params,returnObj} -x 3

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZeMemBCv-1615948356867)(http://showdoc.zhaoshang800.local/server/../Public/Uploads/2020-12-11/5fd319b473188.png)]

可以使用ongl条件表达式过滤指定的请求
 watch com.xxx.web.manager.controller.ad.config.AdConfigController list "{params[0],target}" "params[0]<0"
 获取第一个参数,并且条件满足后面的条件
 
 
  watch com.xxx.web.manager.controller.ad.config.AdConfigController list "{params[0],target}"
 '{params, returnObj}' '#cost>200'
 只查看耗时大于200ms的请求
参数名称参数说明
b在方法调用之前观察
e在方法异常之后观察
s在方法返回之后观察
f(默认)在方法结束之后(正常返回和异常返回)观察
E开启正则表达式匹配,默认为通配符匹配
x指定输出结果的属性遍历深度,默认为 1

观察表达式和条件表达式可以使用ognl表达式

5.查看方法调用路径及响应时间

5.1方法内部调用路径

 trace com.xxx.web.manager.controller.ad.config.AdConfigController list

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3CI8ABTl-1615948356868)(http://showdoc.zhaoshang800.local/server/../Public/Uploads/2020-12-11/5fd31f8429aa9.png)]

5.2方法被调用路径

stack com.xxx.service.basic.ad.config.service.impl.AdConfigServiceImpl pageList
6.记录下指定方法每次调用的入参和返回信息

6.1记录信息

tt -t com.xxx.service.basic.ad.config.service.impl.AdConfigServiceImpl pageList

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-33oKuaNH-1615948356869)(http://showdoc.zhaoshang800.local/server/../Public/Uploads/2020-12-11/5fd3273c1fd47.png)]

6.2查看保存的方法调用列表

tt -l

根据条件搜索
tt -s 'method.name=="pageList"'

6.3查看某一次调用的信息

tt -i 1003 -x3

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fcza44X5-1615948356870)(http://showdoc.zhaoshang800.local/server/../Public/Uploads/2020-12-11/5fd328b34f657.png)]

7.不重启服务器,动态修改代码(添加日志)

java的方法存在方法区内,方法区里面的数据是类加载时从class文件中提取出来的,所以我们可以直接修改class文件并替换,达到热更新的目的

7.1 修改代码,编译成class文件
在这里插入图片描述
将class 文件上传到服务器某个目录下面,然后执行 retransform命令
在这里插入图片描述
再次调用修改后的接口,就会打印出新加的日志
在这里插入图片描述

8.查看类是从那个jar包执行

使用sc -d 命令
在这里插入图片描述

不要光看,还是跟着操作一下最好。说不定什么时候就用上了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值