arthas系列-arthas介绍

目录

arthas简介

arthas的使用

使用注意点

常用命令

后续规划

arthas简介

提到arthas就不得不提一下arthas的前身greys, 我最早研究查看的版本就是这个版本。在github的README中可以看到如下几句话:

  • 线上系统为何经常出错?

  • 数据库为何屡遭黑手?

  • 业务调用为何频频失败?

  • 连环异常堆栈案,究竟是哪次调用所为?

  • 数百台服务器意外雪崩背后又隐藏着什么?是软件的扭曲还是硬件的沦丧?

当时看到上述的几句话让我对这个组件产生了深刻的印象,后来由于当时想做一个增强一个java客户端的时候,便针对该组件做了一些源码分析,针对阅读的内容对arthas做一系列简单的介绍。

个人觉得,最重要的是arthas提供了一项不需要重启服务就可以完成的一些业务特性:

1、动态增强字节码增强后在方法前后进行额外的增强

2、调用Mbean接口实现信息获取

3、通过执行本地命令实现部分额外的功能,如火焰图功能。

arthas的使用

在github项目上README.md中推荐的两种方式 + 个人推荐的方式:

1、下载arthas-boot .jar,之后启动java进程

curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar

2、现在as.sh脚本,并执行启动as.sh脚本(linux/unix/mac)注明,改种方式执行需要系统中安装了telnet,curl, grep, awk, unzip命令。

curl -L https://arthas.aliyun.com/install.sh | sh

3、个人觉得,在实际的环境中可能代操作的机器是不能访问外网的,很难执行上述两种方式。个人更加推荐将arthas的完整包下载下来, 下载解压后,执行as.sh/as.bat即可(注意启动的脚本的用户与java进程启动的用户是否一致),下载方式有如下两种:

使用注意点

无论执行jar -jar arthas-boot.jar 或者执行as.sh均可以增加-h查看 arthas支持的参数列表。如当前我使用的是arthas的3.5的版本,执行后可以看到支持如下参数:

 

从上图上看参数比较多的,我们核心只需要关注如下几个参数:

  • --target-ip: 调整默认监听的ip地址, 默认监听地址是127.0.0.1,启动后在其它机器上只能通过ssh隧道之类的方式访问,可以调整为0.0.0.0,方便其它机器访问。

  • --telnet-port/--http-port: 该配置用于调整默认的telnet-port端口,如果想同时attach多个jvm进程/或3658端口被占用,就需要调整对应的端口值。

  • <pid> pid是指定要attach的进程,平时执行命令的过程中可以不用指定,在执行后会arthas会使用jps命令获取到当前机器上的当前用户启动的java进程。

常用命令

就个人平时使用而言,比较常用的命令有如下几个(本文针对arthas的使用仅仅做简单介绍,后续的文章对命令进行分组进行详细介绍):

  • sm, search method,简而言之,就是查找方法, 快速确定

  • sc, search class,就是查找类的信息,可以使用-d查看到classloader,源文件等信息,可以快速确定是否存在类加载冲突问题

  • tt, TimeTunnel, 方法执行数据的时空隧道,记录下指定方法每次调用的入参和返回信息,并能对这些不同的时间下调用进行观测

  • trace, 方法内部调用路径,并输出方法路径上的每个节点上耗时,可以通过该命令定位方法调用耗时统计

  • watch,方法执行的信息获取,可以获取到方法执行的入参,出参,是否异常信息。

  • reset, 由于tt, trace, watch等命令会对字节码进行增强,使用reset可以将增强对信息会滚

  • options, options主要用于配置系统参数,例如unsafe, dump之类的配置信息,具体作用后续文档介绍

  • stack,之前版本tt命令中包含了stack的作用,可以查看调用到当前方法的调用栈信息。

其实arthas还包含很多其它命令,可以查看https://arthas.aliyun.com/doc/commands.html更加详细的介绍。

后续规划

本章节文档就简单介绍了arthas的一些基本信息,个人常用命令。 后续会针对命令从源码层面进行解释说明。让大家尽可能深入的的了解arthas这款工具,以便清晰其功能集。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值