Arthas 是阿里开源的一款线上 Java 诊断神器,通过全局的视角可以查看应用程序的内存、GC、线程等状态信息,并且能够在不修改代码的情况下,对业务问题进行诊断,包括查看方法的参数调用、执行时间、异常堆栈等信息,大大提升了生产环境中问题排查的效率。
Arthas 的官方网站是 https://arthas.aliyun.com/doc/,目前最新的版本是 3.7.2。
比我们前面介绍的命令行工具和可视化工具,都要强大得多,如果你再遇到下面这些问题,就可以迎刃而解了。
- 客户线上问题,应该如何复现,让客户再点一下吗?
- 异常被吃掉,手足无措,看是哪个家伙写的,竟然是自己!
- 排查别人线上的 bug,不仅代码还没看懂,还没一行日志,捏了一把汗!
- 预发 debug,稍微时间长点,群里就怨声载道!
- 加日志重新部署,半个小时就没了,问题还没有找到,头顶的灯却早已照亮了整层楼......
- 线上机器不能 debug,也不能开 debug 端口,重新部署会不会破坏现场呢?
- 怀疑入参有问题,怀疑合并代码有问题,怀疑没有部署成功,全是问号......
- 一个问题排查一天,被 Diss 排查问题慢......
星球里也有球友一直在呼唤 Arthas 的教程,那这篇内容我们就来详细地盘一盘。
安装 Arthas
macOS 安装
我们先在本地试一下哈,由于我本机是 macOS,所以我这里就以 macOS 为例,Windows 用户可以参考官方文档,非常简单。
我本机已经启动了技术派项目,我们就以技术派为例,来看看 Arthas 的使用。
官方推荐的方式是通过 arthas-boot 来安装,那我们就按照这种来:
curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar
执行完上述命令后,Arthas 会列出可以进行监控的 Java 进程,比如说下图中的第 2 个 [2]: 79209 com.github.paicoding.forum.web.QuickForumApplication
就是技术派的进程,直接输入 2
,然后回车。Arthas 会连接到技术派的进程上,并输出带有 Arthas 的日志,进入 Arthas 的命令交互界面。
Linux 安装
本地 OK 后,我们来试一下服务器上的项目,技术派是部署在腾讯云的香港服务器上,我们先登录到服务器上,然后执行下面的命令获取 arthas-boot.jar:
curl -O https://arthas.aliyun.com/arthas-boot.jar
然后执行 java -jar arthas-boot.jar
,Arthas 会列出可以进行
回复