arthas安装和简单使用
介绍
Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。
--- --- --- 截取arthas官网
安装
-
外网
说明
: 运行环境可以访问外网.下载
: https://arthas.aliyun.com/arthas-boot.jar
-
内网
说明
: 运行环境访问不到外网.下载
: https://arthas.aliyun.com/download/latest_version?mirror=aliyun
运行
指令
:java -jar arthas-boot.jar
- 通过列表前的数字选择需要监视对应的java项目. 比如: 输入
1
->回车
- 命令行提示符变成
[arthas@36092]$
便算是已经启动了arthas服务器并自动连接上.
访问
- 授权远程用户, 修改
arthas.properties
文件- 文件位置: 与
arthas-boot.jar
同级或者在user home
(也即cd ~)下.arthas/lib/版本号/arthas
下 arthas.ip
(监听地址): 将值127.0.0.1
修改成主机ip地址
(只可通过主机ip地址连接服务器)或者0.0.0.0
arthas.username
和arthas.password
: 将注释#
取消, 修改用户名和密码(默认本地连接不需要验证)
- 文件位置: 与
- 命令行访问
- 直接在上一步
运行
成功之后就可以输入指令执行 - 通过
java -jar arthas-client.jar 127.0.0.1 3658
- 也可通过
arthas tunnel
- 直接在上一步
- 浏览器访问: http://127.0.0.1:8563/
- 参考:
指令
记录常用的指令和参数, 更详细见:
在使用中慢慢补充
- 官网命令列表
- 查看所有指令:
help
- 查看单个指令:
help 指令
/指令 -h
/指令 --h
/指令 --help
退出
- 指令:
exit
/quit
/q
/logout
: 退出当前会话, 不影响其他客户端连接;java -jar arthas-client.jar 127.0.0.1 3658 -c "stop"
: 不连接情况下停止服务器.stop
: 完全退出, 关闭arthas服务器.
- 官网: quit 和 stop
dashboard
- 含义: 查看系统的实时数据面板
- 参数:
参数名称 示例 参数说明 [i:] dashboard -i 10000 刷新实时数据的时间间隔(ms), 默认5000ms [n:] dashboard -n 2 刷新实时数据的次数 - 官网: https://arthas.aliyun.com/doc/dashboard.html
thread
- 含义: 查看当前JVM的线程堆栈信息
- 特点: 可以在展示堆栈信息的同时, 带上各个线程的cpu的使用率
- 参数:
参数名称 示例 参数说明 id thread 2 线程 id, 查看指定线程的堆栈信息 [n:] thread -n 4 指定最忙的前 N 个线程并打印堆栈 [b] thread -b 找出当前阻塞其他线程的线程 [i <value>
]thread -i 1000 指定cpu采样间隔 [--all] thread -all 显示所有匹配的线程 - 官网: https://arthas.aliyun.com/doc/thread.html
- 引申记录: 网站Fast Thread, 传入堆栈文件(jstack -l pid > pid.log), 可在线分析线程堆栈信息.
watch
- 含义: 让你能方便的观察到指定函数的调用情况。能观察到的范围为:返回值、抛出异常、入参,通过编写 OGNL 表达式进行对应变量的查看。
- 特点: 能观察到方法的返回值、抛出异常、入参。
- 参数:
参数名称 参数说明 class-pattern 类名表达式匹配 method-pattern 函数名表达式匹配 express 观察表达式, 默认值: {params, target, returnObj}
condition-express 条件表达式 [b] 在函数调用之前观察, 默认关闭 [e] 在函数异常之后观察, 默认关闭 [s] 在函数返回之后观察, 默认关闭 [f] 在函数结束之后(正常返回和异常返回)观察, 默认打开 [x:] 指定输出结果的属性遍历深度, 默认为1, 最大值是4 [n:] 被监察函数执行的次数 - 使用
- 结构: watch class-pattern method-pattern express condition-express
- 观察表达式: 使用时需要用
'
或者"
括起来- 方法参数信息:
params
/params[0]
- 方法返回值:
returnObj
- 异常信息:
throwExp
- 对象属性消息:
params[0].name
/params[0][0].name
- 参考: https://arthas.aliyun.com/doc/advice-class.html
- 方法参数信息:
- 条件表达式:
- 参数:
params[0].id == 1
- 返回值:
returnObj != null && returnObj.success
- 耗时:
#cost > 200
- 正则:
#method.toString().matches(".*get.*")
- 在未执行方法 和 条件表达式结果是false时都会不打印, 可配合
-v
在调用方法时打印表达式是true or false
- 参数:
- 官网: https://arthas.aliyun.com/doc/watch.html
monitor
- 含义: 统计符合条件的类或方法的调用次数
- 用法: 监测5秒内tomcat请求数量:
monitor -c 5 org.apache.catalina.connector.CoyoteAdapter service
- 官网: https://arthas.aliyun.com/doc/monitor.html
扩展
-
idea插件
-
Arthas Spring Boot Starter
-
Spring Boot Admin 整合 Arthas
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix