资讯专栏INFORMATION COLUMN

爱上Java诊断利器之Arthas

Hancock_Xu / 2458人阅读

摘要:是什么摘自的介绍大意为是阿里开源的一个诊断工具,可以帮助开发人员在不修改代码或重启服务器的情况下快速定位线上问题。听起来确实是我们的程序员的一大福利。参考资料使用手册

1. Arthas是什么?

摘自Arthas的Github介绍:

Arthas is a Java Diagnostic tool open sourced by Alibaba.

Arthas allows developers to troubleshoot production issues for Java applications without modifying code or restarting servers.

大意为:Arthas是阿里开源的一个Java诊断工具,可以帮助开发人员在不修改代码或重启服务器的情况下快速定位线上问题。

听起来确实是我们的程序员的一大福利。比如,我们就遇到一种情况,Spring Boot应用中有个cron定时任务为每天凌晨1点启动执行,但是测试起来很不方便,总不能每次修改cron时间来让QC测试吧?这样虽然是方便了测试妹子,但是却徒增了我们开发时间和迭代次数啊!!!那Arthas到底是否能够满足我们需求呢?Go on...

2. 开启Arthas之旅 2.1 安装Arthas

方式1:下载arthas-boot.jar包的方式

wget https://alibaba.github.io/arthas/arthas-boot.jar

此时在你当前所在目录下会有个 arthas-boot.jar 包。

尝试下arthas:

# 启动arthas,会进入命令行交互状态
java -jar arthas-boot.jar

# 查看arthas命令手册
java -jar arthas-boot.jar -h

方式2:通过as.sh安装Arthas(强烈推荐

# 该命令会下载 as.sh 到当前目录下
curl -L https://alibaba.github.io/arthas/install.sh | sh

尝试下arthas:

# 启动arthas,会进入命令行交互状态
./as.sh

# 查看arthas命令手册
./as.sh -h
2.2 开始使用

下面演示我们以 as.sh 为主。

首先我们启动arthas,会查看到我们当前server上部署的应用已经被探测到,当前我的server上只有一个应用程序,只需输入数字1,即可和该应用进行交互:

2.2.1 基础命令

通过 dashboard 命令可以实时查看应用监控数据

通过 thread 命令查看应用程序中所有线程情况


其中第一列为线程的ID。

通过 thread threadId 命令查看指定线程状态信息

比如我们要查看线程ID为506的线程状态信息:

当然,因为是命令行交互,也是支持管道流式操作:

通过 watch 命令去查看方法的参数、返回值和异常信息

通过 sc 命令查看类的信息

通过 sc yourFullClassName

通过 sc -d yourFullClassName* 去查看JVM加载的类信息

通过 sc *yourClassName* 去查看JVM加载的类信息

通过 sm 命令查看类的方法信息

case 1: sm java.math.RoundingMode

case 2: sm -d java.math.RoundingMode

case 3: sm java.math.RoundingMode

2.2.2 重头戏命令

通过 jad yourFullClassName 去查看反编译后的完整代码信息

通过 jad --source-only yourFullClassName > /tmp/yourClassName.java 导出反编译代码到临时目录

通过 vim /tmp/yourClassName.java 进行编辑修改代码

通过 sc -d *yourClassName | grep classLoaderHash 获取加载yourClassName的类加载器

通过 mc -c classLoaderHash /tmp/yourClassName.java -d /tmp 重新用相同类加载器重新编译修改后的类(mc: Memory Compiler)

通过 redefine /tmp/yourFullClassName.class 重新加载新的被编译的类文件

2.2.3 更多操作案例

请参考官方手册,了解更多操作案例和用法。

参考资料

Arthas

Arthas使用手册

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/74835.html

相关文章

  • 推荐一款阿里开源的 Java 诊断工具,好用到爆!

    摘要:是什么鬼是一款阿里巴巴开源的线上诊断工具,功能非常强大,可以解决很多线上不方便解决的问题。诊断使用的是命令行交互模式,支持,操作系统,命令还支持使用键对各种信息的自动补全,诊断起来非常利索。显示当前系统的实时数据面板,按即可退出。 Arthas是什么鬼? Arthas是一款阿里巴巴开源的 Java 线上诊断工具,功能非常强大,可以解决很多线上不方便解决的问题。 Arthas诊断使用的是...

    Rango 评论0 收藏0
  • Java诊断工具Arthas

    摘要:诊断工具简介是阿里开源的一个线上诊断工具,发现阿里还是挺喜欢开源一些技术的,造福人类。昨天试用了一下,发现真是强大,解决了我工作两年的很多困扰,有点相见恨晚的感觉。每秒统计方法的调用次数,成功失败次数和平均响应时间等。具体使用请见。 Java诊断工具Arthas 1. Arthas简介 Arthas是阿里开源的一个线上java诊断工具,发现阿里还是挺喜欢开源一些技术的,造福人类。昨天试...

    happyfish 评论0 收藏0
  • 阿里在线诊断工具Arthas调整日志等级记录

    摘要:阿里的开源诊断工具可以在线调整等级查找当前类的用获取单独设置的全局设置 阿里的开源Java诊断工具Arthas可以在线调整log等级 查找当前类的classloader hashcode sc -d com.example.demo.arthas.user.UserController | grep classLoaderHash 用OGNL获取logger ognl -c 1be6f...

    lansheng228 评论0 收藏0
  • Arthas使用指南

    摘要:注意这个统计也会产生一定的开销这个接口本身开销比较大,因此会看到的线程占用一定的百分比,为了降低统计自身的开销带来的影响,可以把采样间隔拉长一些,比如毫秒。 Arthas 能为你做什么? 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception? 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了? 遇到问题无法在预发 debug 一下,难道只能通过加...

    darkerXi 评论0 收藏0
  • 【深度】| 值得收藏的阿里开源技术

    摘要:淘宝定制基于,是国内第一个优化定制且开源的服务器版虚拟机。数据库开源数据库是基于官方版本的一个分支,由阿里云数据库团队维护,目前也应用于阿里巴巴集团业务以及阿里云数据库服务。淘宝服务器是由淘宝网发起的服务器项目。 Java JAVA 研发框架 SOFAStack SOFAStack(Scalable Open Financial Architecture Stack)是用于快速构建金融...

    econi 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<