Arthas常用功能及一次线上问题排查

一、Arthas简介

Arthas是Alibaba开源的Java诊断工具,功能很强大,它是通过Agent方式来连接运行的Java进程、主要通过交互式来完成功能。

stack — Arthas 3.6.1 文档

首先贴出官方文档,自己使用也不多,主要用于一次线上问题排查

二、运行

java -jar arthas-boot.jar ,运行Arthas

选择要粘附的进程,输入编号即可

使用以下两个命令其中一个查看java程序的进程号

ps -ef

jps

备注:也可以通过浏览器连接Arthas,只是执行命令的时候需要加--target-ip参数

三、dashboard

输入以下命令进入仪表盘,监控线程,内存状态,GC等信息

四、thread

打印全部线程:thread

打印最忙的前10条线程: thread -n 10

根据线程号打印: thread 20

找出阻塞其他线程的线程 注意, 目前只支持找出synchronized关键字阻塞住的线程, 如果是java.util.concurrent.Lock, 目前还不支持。

thread -b

如果响应慢,阻塞状态的线程比较多,我们需要重点关注

五、查看已经加载的类(如果没有代码权限,使用jad)

sc com.XXX.sgw.controller.*

sc com.XXX.controller.AccessLogController

六、追踪方法堆栈调用时间

跟踪方法内部调用,输出各个节点的耗时,主要用于响应慢的时候

trace comXXX.controller.api.ServiceGatewayV1Controller list

trace com.XXX.service.ServiceGatewayV1Service customizeQuery m -n 2 ,一般需要输出多次结果,所以这里可以通过-n指定结果数量

七、查看程序调用出入参

类似于debug,查看被测方法的参数和返回值

watch com.XXX.controller.api.ServiceGatewayV1Controller list "{params[0],params[1],returnObj}"

watch com.XXX.service.ServiceGatewayV1Service customizeQuery "{params[0],params[1],params[2],returnObj}"

八、回溯方法执行

下面关注:耗时、IS-RET为false表示失败

tt -t com.XXX.vo.PageVo getPageSize

tt -i 1037 -w "target.getPageSize()"

九、查看方法被调用路径

stack com.XXX.service.impl.PostgresqlServiceImpl customQuery

十、 反编译线上代码

jad --source-only com.yingzi.data.sgw.controller.api.ServiceGatewayV1Controller
jad --source-only com.yingzi.data.sgw.controller.api.ServiceGatewayV1Controller getDataByAlgorithm

十一、以3秒为一个时间窗口,统计时间窗口内调用次数,成功次数,失败次数,平时RT时间。用于监控方法的执行情况

monitor -c 3 com.yingzi.data.sgw.controller.api.ServiceGatewayV1Controller list

十二、JVM

重点关注下死锁(DEADLOCK-COUNT,下面不为0,表示有死锁)

根据下面的栈信息,可以看到,这两个线程互相请求被对方占用未释放的资源导致了死锁。举个例子,现实中很少

十三、profiler(火焰图)

系统cpu高的时候,我们可以看系统调用,相比于perf命令,profiler的步骤要更简便点,

profiler start,启动,默认是生成cpu的火焰图,which event to trace (cpu, alloc, lock, cache-misses etc.), default value is cpu

profiler stop,停止,可以看到生成的svg文件路径

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值