Arthas的安装和基本使用
2023-12-29 18:41:06
背景
在开发项目的时候,你经常会遇到下面的场景:
- 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
- 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
- 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
- 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
- 是否有一个全局视角来查看系统的运行状况?
- 有什么办法可以监控到 JVM 的实时运行状态?
- 怎么快速定位应用的热点,生成火焰图?
- 怎样直接从 JVM 内查找某个类的实例?
这时候,我们可以使用 Arthas 来解决上面的问题。
Arthas 的官方文档: Arthas使用说明
安装
因为 Arthas 是一个由 Spring boot 编写的项目,所以进行安装使用时,我们只需要把对应的 jar 包进行下载,然后使用 java -jar 就可以把项目跑起来
curl -O https://arthas.aliyun.com/arthas-boot.jar
执行上面的 jar 包时,我们必须先运行一个 java 进程在内存中,不然会出现找不到 java 进程的错误 【!!#ff0000 可以使用 jps 查看系统运行的进程!!】
java -jar arthas-boot.jar
简单使用
1. thread
通过 thread 命令查看当前 JVM 的线程堆栈信息
需要使用加参数的命令,在后面拼接即可
参数名称 | 参数说明 |
---|---|
数字 | 线程id |
[n:] | 之地昂最忙的前N个线程并打印堆栈 |
[b] | 找到当前阻塞其他线程的线程 |
[i] | 指定cpu 占比统计的采样间隔,单位为毫秒 |
thred -n 3
thread -b
2. jad
我们想知道线上的分支是否有自己的代码时,我们可以通过 jad 命令进行反编译
jad 类全路径名
3. monitor
作用: 监控指定类中方法执行情况
对匹配 class-pattern / method-pattern 的类, 反复噶调用进行监控
monitor 命令是一个非实时返回命令,是不断等待目标 java 进程返回信息,直到用户输入 Ctrl + C 为止
monitor 类全路径名 方法名 -n 监控次数 --cycle 间隔采样的时间[单位s]
4. watch
观察指定方法的调用情况
方法执行数据规则,让你能方便观察到指定方法的调用情况
能观察到的范围为:返回值,抛出异常,入参,通过编写 ONGL 表达式进行变量的查看
watch 类名 方法名 '{params,returnObj,throwExp}' -n 5 -x 3
这里的 ‘{params,returnObj,throwExp}’ 就是所谓的ognl 表达式的一种,它表示需要输出参数,返回值,抛出异常
5. trace
trace 是对方法内部的调用路径进行追踪,并输出方法路径上每个节点的耗时
参数说明
参数名称 | 参数说明 |
---|---|
class-pattern | 类名表达式 |
method-pattern | 方法名表达式 |
condition-express | 条件表达式,默认是通配符匹配 |
[E] | 开启正则表达式匹配,默认是通配符匹配 |
[n:] | 设置命令执行次数 |
#cost | 方法执行耗时,单位是毫秒 |
trace 类名 方法名 调用次数 限制条件
Arthas Idea 插件的简单介绍
上面大概介绍了 Arthas 的一些通用命令。平时开发的时候,我们完全可以借助一些编译器的插件,而无需手敲命令。
简单使用
启用插件后,我们就可以负者一些通用命令进行修改
文章来源:https://blog.csdn.net/TheWindOfSon/article/details/135292739
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!