文档
https://arthas.aliyun.com/doc/
安装使用流程
1. 下载安装Arthas
curl -O https://arthas.aliyun.com/arthas-boot.jar
如果服务器无法访问互联网,也可以通过手动下载压缩包的放到服务器中解压
2.找到要监测的服务的进程号
通过 lsof -i :[port] 或者 ps -aux | grep [service-name] 其中 [port]是服务的端口号, [service-name]服务的名称
3. 运行 arthas-boot.jar
java -jar /home/hik/arthas-packaging-3.3.9-bin/arthas-boot.jar
这里如果已经配合了jjava的环境。则可以使用以上的命令运行,只要将arthas-boot.jar的路径改为自己实际中的路径即可。如果没有配置java环境,则需要到指定jdk的bin目录运行语句:
./java -jar /home/hik/arthas-packaging-3.3.9-bin/arthas-boot.jar
4. 选择进程号对应的编号
例如如图 进程18957对应的是 10,所以我们输入 10
这样我们就可以使用Arthas的命令了。
5. 结束或者退出
命令的结束可以使用 ctrl + c 或者 q 结束。如果退出Arthas则使用 stop命令即可。
常见配置
1. 结果、参数以json的方式输出
执行命令 : options json-format true
2. 开启执行结果存日志功能(默认是关闭的)
执行命令: options save-result true
3. 把监控的类dum出class文件,然后通过反编译文件进行查看
执行命令: options dump true
问题以及解决办法
1.启动报错
运行 : ./java -jar /home/hik/arthas-packaging-3.3.9-bin/arthas-boot.jar 或者 ./java -jar /home/hik/arthas-packaging-3.3.9-bin/arthas-boot.jar [pid]
报错:
[INFO] arthas-boot version: 3.3.9
[INFO] Can not find java process. Try to pass <pid> in command line.
Please select an available pid.
原因:---- 只装jre的环境或者安装的是严格版的jre 没办法运行 arthas-boot.jar ,需要安装完整的jdk。
2. 运行提示不存在java命令
./java -jar /home/hik/arthas-packaging-3.3.9-bin/arthas-boot.jar
提示没有java命令
原因:---- 没有配置jdk环境,需要配置jdk环境 或者 到指定jdk安装目录的bin目录下执行
3. 选择进程对应的编号之后,报错
The telnet port 3658 is used by process 20017 instead of target process 18957, you will connect to an unexpected process.
原因: -- 之前已经使用Arthas运行了20017的进程,但是没有退出,先要进到原来的监控中运行stop命令。
4. 启动报错
运行 : ./java -jar /home/hik/arthas/arthas-boot.jar
[ERROR] Start arthas failed, exception stack trace:
com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file: target process not responding or HotSpot VM not loaded
at sun.tools.attach.LinuxVirtualMachine.<init>(LinuxVirtualMachine.java:106)
at sun.tools.attach.LinuxAttachProvider.attachVirtualMachine(LinuxAttachProvider.java:78)
at com.sun.tools.attach.VirtualMachine.attach(VirtualMachine.java:250)
at com.taobao.arthas.core.Arthas.attachAgent(Arthas.java:86)
at com.taobao.arthas.core.Arthas.<init>(Arthas.java:28)
at com.taobao.arthas.core.Arthas.main(Arthas.java:124)
解决办法 : 运行时加上进程号 ./java -jar /home/hik/arthas/arthas-boot.jar 12054