Arthas
是Alibaba开源的Java诊断工具,主要解决以下问题:
- 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
- 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
- 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
- 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
- 是否有一个全局视角来查看系统的运行状况?
- 有什么办法可以监控到JVM的实时运行状态
今天我们主要使用Arthas
的请求追踪、反编译以及接口参数监控。
一、Arthas
的下载。
1、先从官方git地址https://github.com/alibaba/arthas/blob/master/README_CN.md下载Arthas的jar包,然后执行java -jar 运行该jar包。如果觉得官网下载慢也可以直接在我分享的百度云盘中下载(链接: https://pan.baidu.com/s/1sTyU03uSUObOxtW4RkPkNw&shfl=shareset 提取码: drw1 )
二、Arthas的启动。
Arthas启动的前提是要启动你的java项目,因为Arthas启动时会自动扫描机器上运行的java项目,如下图
三、常用命令
1、sc 命令,这个命令能搜索出所有已经加载到 JVM 中的 Class 信息
,
比如sc -d 打印该类的详细信息
2、trace 命令,方法内部调用路径,并输出方法路径上的每个节点上耗时,可以使用该命令来检测接口里那一步耗时较多。注意:每次只能跟踪一级方法的调用链路。
这时只需要调用接口就行,如下:
继续追踪getLaboratoryRelationship这个接口,查看里面方法的具体耗时:
四、watch命令,该命令能方便的观察到指定方法的调用情况。能观察到的范围为:返回值
、抛出异常
、入参。
当然这只是Arthas的一小部分功能,如果还需要更详细的介绍,请移步官方API文档https://alibaba.github.io/arthas/index.html。