前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >超级强的Java在线诊断利器

超级强的Java在线诊断利器

作者头像
永恒君
发布2022-12-06 15:41:09
4270
发布2022-12-06 15:41:09
举报
文章被收录于专栏:开源小分队开源小分队

大家好,我是爱撸代码的开源大叔。

今天给大家分享一款线上系统诊断利器:Arthas

背景

相信很多小伙伴都遇到过这种情况吧,当线上出问题并且没有思路的时候会想着先打点日志,再进行打包、发布、重启的完整发布流程,这种流程太麻烦和耗时了;当出问题的时候,有时会怀疑线上代码是不是自己提交的最新代码,则需要登录服务器把线上的代码down下来反编译才能确定,有的时候服务器还有访问限制。所以就希望有款工具能够实现 在线debug调试而不用重新发布服务,可以查看线上代码、监控代码运行情况等等。这个时候Arthas就诞生了

介绍

Arthas提供了在线Debug、查看线上代码情况、JVM实时运行状态等功能。

快速入门

安装 & 运行

下载

代码语言:javascript
复制
wget https://arthas.aliyun.com/arthas-boot.jar

安装/运行

代码语言:javascript
复制
java -jar arthas-boot.jar

会出现机器上所跑的Java进程信息,供选择需要监控的进程,如下图

选择进程服务 这里选择第二个,则直接输入 2 回车就可以了,如下图

启动是不是很简单,那下面就跟着开源大叔去尝试都有哪些强大的功能吧,由于功能很多,这里就简单列出几个进行体验。

1.反编译类查看代码信息

2.查看JVM 线程堆栈信息

高级使用

除了上面介绍的两个简单命令以外,还有其他一些强大的功能

1.查看Arthas快捷键信息

代码语言:javascript
复制
keymap

2.加入debug日志信息

这里就拿Test举例,在Test中增加打印信息,然后把Test重新编译成class文件,通过Arthas的命令进行重新载入,就可以看到加入的日志调试信息了。

代码语言:javascript
复制
## class的路径为绝对路径
redefine /self_data/spring-boot-simple/actuator-simple/target/classes/com/hs/springboot/actuator/conf/Test.class
##下面是响应信息,表示已经重新加载了
redefine success, size: 1, classes:
com.hs.springboot.actuator.conf.Test

3.通过jvm命令查看当前jvm的状态信息

4.通过heapdump 生成应用当前的dump信息,和使用jmap命令效果类似

5.还有类加载器相关的命令 例如上面介绍的redefine 加载外部class文件到JVM中

除了上面介绍的 jvm 或者类/类加载器相关的,Arthas还包括了一些监控命令监控方法执行的montior命令、监控方法执行数据的watch命令以及方法路径上每个节点耗时的trace命令。

Arthas除了到机器上执行命令以外,还有一个强大的功能就是通过 浏览器进行操作,跟着开源大叔一起来看看吧。Arthas默认监听的是本地ip,如果想远程连接远端IP可以考虑使用tunnel server进行操作,这边就拿本地来体验一下Arthas的 Web Console效果吧。

浏览器访问http://localhost:3658 会出下下面的画面

在这上面操作和连上服务器操作效果是完全一样的,操作起来很流畅 如下图:

通过上面的介绍大家是不是对Arthas有了初步的了解了呢,那我们今天Arthas的介绍就到这里,我们来总结一下吧。

总结

1.Arthas是一款采用命令行交互模式的Java诊断工具。

2.提供了丰富的命令行工具包括 简单基础命令、JVM命令、class/classloader相关命令、监控命令、profiler/火焰图、鉴权等功能,以及丰富的快捷键,当然还可以自定义快捷键来满足自己的需要。

3.提供了可以通过浏览器操作的Web Console 控制台 以及tunnel server管理/连接多个Agent。

4.Arthas还提供了类似Restful风格的交互api,当感觉上面的命令或者控制台用起来不方便的时候,也可以基于api进行定制化开发。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源小分队 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
    • 介绍
    • 快速入门
      • 安装 & 运行
      • 高级使用
      • 总结
      相关产品与服务
      命令行工具
      腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档