文章目录
- Arthas(读:阿尔萨斯) 是什么
- Arthas能干什么
- 快速安装
- 第一种:使用arthas-boot(推荐)
- 第二种:使用as.sh
- Cloud Toolkit插件一键诊断远程服务器
- 卸载
- 启动异常情况
- 正常关闭
- 示例项目
- 参考资料
Arthas(读:阿尔萨斯) 是什么
Arthas 是Alibaba开源的Java诊断工具
GitHub地址: Alibaba Althas 项目地址
Arthas能干什么
当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:
- 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
- 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
- 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
- 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
- 是否有一个全局视角来查看系统的运行状况?
- 有什么办法可以监控到JVM的实时运行状态?
Arthas支持JDK 6+,支持Linux/Mac/Winodws,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。
快速安装
第一种:使用arthas-boot(推荐)
下载arthas的jar包; 然后启动jar包java -jar arthas-boot.jar
wget https://alibaba.github.io/arthas/arthas-boot.jar
java -jar arthas-boot.jar
启动之后会列出所有的Java进程; 选择你想要诊断的进程; 比如这里我输入 4
回车
这时候就进入的Arthas的操作界面了;
注意:
执行该程序的用户需要和目标进程具有相同的权限。比如以admin用户来执行:sudo su admin && java -jar arthas-boot.jar 或 sudo -u admin -EH java -jar arthas-boot.jar。
如果attach不上目标进程,可以查看~/logs/arthas/ 目录下的日志。
第二种:使用as.sh
Arthas 支持在 Linux/Unix/Mac 等平台上一键安装,请复制以下内容,并粘贴到命令行中,敲 回车 执行即可:
curl -L https://alibaba.github.io/arthas/install.sh | sh
上述命令会下载启动脚本文件 as.sh 到当前目录,你可以放在任何地方或将其加入到 $PATH 中。
直接在shell下面执行./as.sh
,就会进入交互界面。
也可以执行./as.sh -h
来获取更多参数信息。
如果从github下载有问题,可以使用gitee镜像
curl -L https://arthas.gitee.io/install.sh | sh
Cloud Toolkit插件一键诊断远程服务器
简单配置,无须手动安装Arthas
通过Cloud Toolkit插件使用Arthas一键诊断远程服务器
卸载
- 在 Linux/Unix/Mac 平台
删除下面文件:
rm -rf ~/.arthas/
rm -rf ~/logs/arthas
- Windows平台直接删除
user home
下面的.arthas
和logs/arthas
目录
启动异常情况
Target process 24501 is not the process using port 3658, you will connect to an unexpected process
出现这种情况,是我们刚刚诊断了
com.shirc.arthasexample.ArthasExampleApplication
的进程;
然后退出的时候用了 ctrl+c
或者exit
退出,其实没有把那个会话正常关闭;
下次再选择其他的进程的时候会提示你有一个会话没有正常关闭,要你去正常关闭一下;
解决方法: 重新进入刚刚那个会话;
然后执行: shutdown
正常关闭会话; 才能重新打开其他进程的会话;
正常关闭
shutdown
示例项目
可以下载我用来调试的项目 Arthas 示例项目
本Arthas系列的的文章的所有调试命令都是基于上面的项目;
先把项目拉下来,本地启动;之后就可以看到进程了