¶一、Arthas简介
Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱。
当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:
- 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
- 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
- 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
- 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
- 是否有一个全局视角来查看系统的运行状况?
- 有什么办法可以监控到JVM的实时运行状态?
Arthas采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。
使用说明可以看下官方的文档https://alibaba.github.io/arthas/
¶二、安装及使用
以下通过CentOS系统举例来安装Arthas
¶1.安装Java环境
首先去Oracle下载JDK,可以通过wget或者curl -O来下载到Linux主机上。
最方便的就是下载一个tar.gz格式的压缩包,然后通过tar -zxf解压,以下是笔者最终存放jdk的物理路径
1 | [nico@VM_0_17_centos jdk1.8.0_181]$ pwd |
接下来配置环境变量,通过vim /etc/profile进入编辑操作,并增加以下配置
1 | export JAVA_HOME=/usr/lib/java-1.8.0/jdk1.8.0_181 |
退出并保存,通过执行source /etc/profile立即生效
然后分别执行java和javac验证环境是否生效
¶2.安装Arthas
Arthas非常小巧,官方有一个可直接执行的sh脚本供我们使用,可以通过以下指令下载
1 | curl -L https://alibaba.github.io/arthas/install.sh | sh |
启动Arthas
1 | ./as.sh |
¶3.安装ElasticSearch
Arthas启动需要存在至少一个及以上的Java进程,这里我们为了方便测试,直接安装ElasticSearch。
和安装JDK的方式类似,我们去官方下载一个tar.gz的压缩包,然后解压
1 | [nico@VM_0_17_centos elasticsearch]$ ll |
ElasticSearch的不允许root用户启动,所以笔者用的是nico账号,创建账号过程如下
1 | adduser nico |
以上指令请分开到对应的目录执行,执行完毕之后我们进入elasticsearch目录下的bin目录中,启动elasticsearch
1 | ./elasticsearch |
¶4.使用Arthas监控ElasticSearch
进入as.sh所在目录,启动Arthas
1 | ./as.sh |
1 | [nico@VM_0_17_centos arthas]$ ./as.sh |
我们看到,当前只有ElasticSearch一个进程,输入1监控ElasticSearch
1 | [nico@VM_0_17_centos arthas]$ ./as.sh |
启动成功,Arthas提供一个shell的操作模式来供我们去监控Java进程,具体指令可以看下官方的Wiki
¶5.安装过程可能遇到的问题
(1)遇到报错java.security.AccessControlException: Access Denied
官方解决办法
1 | Add the permission in client.policy (for the application client), or in server.policy (for EJB/web modules) for the application that needs to set the property. By default, applications only have “read” permission for properties. |
java.policy所在的目录为JDK所在目录下的相对目录jre/lib/security
1 | vim java.policy |
尾部增加一行即可
1 | permission java.security.AllPermission; |