Arthas 简介
Arthas
是Alibaba开源的Java诊断工具,深受开发者喜好。html
Arthas
支持 JDK 6+
,支持 Linux
、Mac
、Windows
,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。java
Arthas 能帮你解决的问题
-
一、这个类从哪一个 jar 包加载的?为何会报各类类相关的 Exception? -
二、我改的代码为何没有执行到?难道是我没 commit?分支搞错了? -
三、遇到问题没法在线上 debug,难道只能经过加日志再从新发布吗? -
四、线上遇到某个用户的数据处理有问题,但线上一样没法 debug,线下没法重现! -
五、是否有一个全局视角来查看系统的运行情况? -
六、有什么办法能够监控到JVM的实时运行状态? -
七、怎么快速定位应用的热点,生成火焰图?
Arthas 安装
使用 as.sh
Arthas 支持在 Linux/Unix/Mac 等平台上一键安装,请复制如下内容,并粘贴到命令行中,敲 回车
执行便可:git
$ curl -L https://alibaba.github.io/arthas/install.sh | sh
上述命令会下载启动脚本文件 as.sh
到当前目录
,你能够放在任何地方或将其加入到 $PATH
中。github
直接在shell下面执行 ./as.sh
,就会进入交互界面。web
也能够执行 ./as.sh -h
来获取更多参数信息。docker
手动安装
经过 rpm/deb 来安装shell
在releases页面下载rpm/deb包:https://github.com/alibaba/arthas/releasesbash
# 安装deb
$ sudo dpkg -i arthas*.deb
# 安装rpm
$ sudo rpm -i arthas*.rpm
# deb/rpm安装的用法,在安装后,能够直接执行
$ as.sh
启动 Arthas
在命令行下面执行(使用和目标进程一致的用户启动,不然可能attach失败):微信
$ curl -O https://alibaba.github.io/arthas/arthas-boot.jar
$ java -jar arthas-boot.jar
-
执行该程序的用户须要和目标进程具备相同的权限。好比以admin用户来执行: sudo su admin && java -jar arthas-boot.jar
或sudo -u admin -EH java -jar arthas-boot.jar
。 -
若是attach不上目标进程,能够查看 ~/logs/arthas/
目录下的日志。 -
若是下载速度比较慢,可使用aliyun的镜像: java -jar arthas-boot.jar --repo-mirror aliyun --use-http
-
java -jar arthas-boot.jar -h
打印更多参数信息。
选择应用java进程:网络
$ $ java -jar arthas-boot.jar
* [1]: 35542
[2]: 71560 arthas-demo.jar
Demo进程是第2个,则输入2,再输入 回车/enter
。Arthas会attach到目标进程上,并输出日志:
[INFO] Try to attach process 71560
[INFO] Attach process 71560 success.
[INFO] arthas-client connect 127.0.0.1 3658
,---. ,------. ,--------.,--. ,--. ,---. ,---.
/ O \ | .--. ''--. .--'| '--' | / O \ ' .-'
| .-. || '--'.' | | | .--. || .-. |`. `-.
| | | || |\ \ | | | | | || | | |.-' |
`--' `--'`--' '--' `--' `--' `--'`--' `--'`-----'
wiki: https://alibaba.github.io/arthas
version: 3.0.5.20181127201536
pid: 71560
time: 2018-11-28 19:16:24
$
Dashboard
# 在上面基础环境中执行 dashboard 命令
$ dashboard

在线演示
-
基础教程
:https://alibaba.github.io/arthas/arthas-tutorials?language=cn&id=arthas-basics -
进阶教程
:https://alibaba.github.io/arthas/arthas-tutorials?language=cn&id=arthas-advanced
基于 Docker 诊断 Java 进程
诊断 Docker 里的 Java 进程
$ docker exec -it ${containerId} /bin/bash -c "wget https://alibaba.github.io/arthas/arthas-boot.jar && java -jar arthas-boot.jar"
诊断 k8s 里容器里的 Java 进程
$ kubectl exec -it ${pod} --container ${containerId} -- /bin/bash -c "wget https://alibaba.github.io/arthas/arthas-boot.jar && java -jar arthas-boot.jar"
把 Arthas 打包到基础镜像里
FROM openjdk:8-jdk-alpine
# copy arthas
COPY --from=hengyunabc/arthas:latest /opt/arthas /opt/arthas
若是想指定版本
,能够查看具体的tags:https://hub.docker.com/r/hengyunabc/arthas/tags
总结
Arthas
是一个强大的 Java 诊断工具,能够分析 Java 代码bug带来的资源消耗等问题。
Arthas 详细使用方法,公众号后台回复 Arthas
获取Arthas详细参数思惟导图。
Golang 微服务 1元 轻松购买
参考连接
-
Arthas
快速入门 https://alibaba.github.io/arthas/quick-start.html -
https://github.com/alibaba/arthas/blob/master/README_CN.md
热门文章推荐
-
K8S故障排查指南- but volume paths are still present on disk -
适用于CI容器漏洞扫描神器 -
Redis 内存分析神器 -
实时Web日志分析器 -
容器化配置生成神器 -
从 Docker 到 Kubernetes 日志管理机制详解 -
Kubernetes 私有集群 LoadBalancer 解决方案 -
K8S Pod 内抓包快速定位网络问题
最后
-
欢迎您加我微信【 ypxiaozhan01】,拉您进技术群,一块儿交流学习... -
欢迎您关注【 YP小站】,学习互联网最流行的技术,作个专业的技术人...

本文分享自微信公众号 - YP小站(ypxiaozhan)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。