Arthas工具的使用
Arthas工具的使用
文章目录
官方文档: arthas官方文档
Arthas对于调查线上问题会有很大的帮助,可以结合Idea工具来配合使用。
一、 Idea中安装Arthas插件
安装之后重启,然后再代码区域右键如果可以看到如下菜单选项,则说明安装成功
二、 配置Arthas环境
Arthas其实就是一个jar包,我们只需要启动该jar包即可,具体的环境配置就不多说了。
curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar
启动之后如图所示:
选择对应的进程序号即可attach具体的进程
如果要退出当前的连接,quit或exit都可以,但是该操作不会影响attach的进程,attach的进程会继续运行。 如果需要完全退出arthas,使用stop,此时所以attach的会话都会关闭。
注:如果提示端口号被占用,可以使用如下命令换一个端口号:
java -jar arthas-boot.jar --telnet-port 9985 --http-port -1
注:以下命令的演示demo使用官方提供的math-game.jar
curl -O https://arthas.aliyun.com/math-game.jar
java -jar math-game.jar
三、基础命令入门
1、help
查看命令帮助信息
2、cat、pwd、version
cat 查看文件内容(和linux使用相同)
pwd 返回当前工作目录
version 查看arthas版本
3、grep
匹配查找,只能用于管道命令
参数列表 | 用途 |
---|---|
-n | 显示行号 |
-m | 与查询一起使用,控制显示的最大行数 |
-i | 忽略大小写查找 |
-e "正则表达式" | 使用正则查找 |
例如:
显示行号
显示10行
4、cls
清屏
5、session
查看当前会话信息
6、reset
将被arthas增强过的类还原(arthas服务端关闭时也会自动重置增强过的类),可指定某些类,不指定则全部还原。
7、history
打印历史命令
8、keymap
arthas的快捷键列表
四、JVM相关操作命令
1、jvm
显示jvm信息
2、sysprop
查看和修改jvm的系统属性
查询相关属性:
修改:
sysprop key value
sysprop user.country CN
3、sysenv
查看jvm环境属性
4、vmoption
查看、更新VM诊断的相关参数
注:修改方式与sysprop相同
5、getstatic
获取类的静态属性
getstatic 类名 属性名
6、 dashboard
这个命令可以展示当前进程的相关详细信息,这个界面现实的信息是会自动刷新的,ctrl+c即可退出。
7、 thread
显示当前进程所有的线程信息
参数列表 | 用途 |
---|---|
thread 线程号 | 指定线程信息 |
-n | 指定当前最忙的N个线程并打印堆栈信息 |
-b | 显示当前阻塞其他线程的线程 |
-i | 指定采样间隔,单位毫秒 |
当前最忙的线程信息
阻塞的
设置采样间隔
五、class/classloader 相关命令
1、 jad
反编译class文件,jad后面跟的是全类名
2、dump
将正在jvm中运行的程序的字节码文件保存到特定目录(~/logs/arthas/classdump/),不同的类加载器放在不同的目录下
3、classloader
查看 classloader 的继承树,urls,类加载信息
4、monitor
监控指定类中某方法的执行情况
idea中生成命令:
5、 watch
watch可以查看方法的入参、返回值、抛出异常等信息,具体命令可以借助Idea插件来使用
工具会帮我们自动生成watch命令,选中需要检测的方法点击之后我们就可以直接粘贴我们的命令,当然直接使用命令或者根据自己需要做些许调整即可。
watch demo.MathGame print '{params,returnObj,throwExp}' -n 5 -x 3
参数-x 1与-x 3对比如下:
注:
-n控制检测的次数,-n 5则表示自动检测5次后自动停止。
-x表示参数信息遍历的深度,默认值为1,最大值为4,防止展开结果占用太多内存
6、trace
显示方法内部调用路径,并输出方法路径上的每个节点上耗时
trace demo.MathGame print -n 5 --skipJDKMethod false
注: --skipJDKMethod 为true则不显示jdk的方法
7、stack
输出当前方法被调用的调用路径
stack demo.MathGame print -n 5
未完待续…
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)