0
点赞
收藏
分享

微信扫一扫

【Arthas】初识Arthas,安装使用

紫荆峰 2022-05-17 阅读 79



文章目录

  • ​​Arthas(读:阿尔萨斯) 是什么​​
  • ​​Arthas能干什么​​
  • ​​快速安装​​
  • ​​第一种:使用arthas-boot(推荐)​​
  • ​​第二种:使用as.sh​​
  • ​​Cloud Toolkit插件一键诊断远程服务器​​
  • ​​卸载​​
  • ​​启动异常情况​​
  • ​​正常关闭​​
  • ​​示例项目​​
  • ​​参考资料​​

【Arthas】初识Arthas,安装使用_jar

Arthas(读:阿尔萨斯) 是什么


Arthas 是Alibaba开源的Java诊断工具
GitHub地址: ​​Alibaba Althas 项目地址​​


Arthas能干什么

当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:

  1. 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
  2. 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
  3. 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
  4. 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
  5. 是否有一个全局视角来查看系统的运行状况?
  6. 有什么办法可以监控到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

【Arthas】初识Arthas,安装使用_java_02

启动之后会列出所有的Java进程; 选择你想要诊断的进程; 比如这里我输入 ​​4​​ 回车

【Arthas】初识Arthas,安装使用_java_03

这时候就进入的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​​,就会进入交互界面。

【Arthas】初识Arthas,安装使用_arthas_04

也可以执行​​./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​

【Arthas】初识Arthas,安装使用_jar_05

出现这种情况,是我们刚刚诊断了

​com.shirc.arthasexample.ArthasExampleApplication​​的进程;

然后退出的时候用了 ​​ctrl+c​​或者​​exit​​退出,其实没有把那个会话正常关闭;

下次再选择其他的进程的时候会提示你有一个会话没有正常关闭,要你去正常关闭一下;

解决方法: 重新进入刚刚那个会话;

然后执行: ​​shutdown​​ 正常关闭会话; 才能重新打开其他进程的会话;

正常关闭

​shutdown​

示例项目

可以下载我用来调试的项目 ​​Arthas 示例项目​​

本Arthas系列的的文章的所有调试命令都是基于上面的项目;

先把项目拉下来,本地启动;之后就可以看到进程了

【Arthas】初识Arthas,安装使用_arthas_06


举报

相关推荐

0 条评论