Arthas:线上问题排查工具

Arthas:线上问题排查工具

By Shawn Lee

arthas(阿尔萨斯)主要用于排查线上问题,但需要有shell权限,会有安全风险,但还是值的学习;

线上问题受阻时提供一种新的解决思路 扩展思路,解决思路很重要,工具没有可以创造,但如果没有思路有工具也无从下手;可在公司安全架构内找类似工具或者自己创建

一、使用arthas的注意事项

1.本地环境启动命令

java -jar arthas-boot.jar

2.本地环境使用注意

使用cmd shell,切勿使用Git Bash shell。

二、常用命令

1. dashboard仪表盘

dashboard

本地图片

2. thread命令查询

统计1秒内cpu使用率最高的n个线程:

thread -n 3 -i 1000

本地图片

查询出当前被阻塞的线程:

thread -b

本地图片

指定采样的时间间隔:

thread -i 1000

本地图片

3.profiler采集火焰图

说明 命令
启动 profiler profiler start
获取已采集的 sample 的数量 profiler getSamples
查看 profiler 状态 profiler status
停止 profiler 生成 html 格式结果 profiler stop —format html
本地图片

4. jad反编译代码

jad com.sli.Test

本地图片

5. vmoption查询并修改jvm信息

本地图片 修改 vmoption HeapDumpOnOutOfMemoryError true

6. trace监控函数耗时

trace 待监控方法的全类名 待监控的方法名 —skipJDKMethod false 包含 jdk 里的函数调用

trace --skipJDKMethod false 包 方法

本地图片

7. watch函数执行数据观测

观察函数调用的入参、this 对象和返回值

watch 包 方法 -x 1

本地图片

8. stack输出当前方法被调用的调用路径

stack  包 方法

本地图片