查看原文
其他

阿里巴巴开源性能监控神器

Mr.Fire 架构师成长之路 2023-09-18

Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱。

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

  1. 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?

  2. 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?

  3. 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?

  4. 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!

  5. 是否有一个全局视角来查看系统的运行状况?

  6. 有什么办法可以监控到JVM的实时运行状态?

  7. 怎么快速定位应用的热点,生成火焰图?

  8. 怎样直接从JVM内查找某个类的实例?

1、下载

curl -O https://arthas.aliyun.com/arthas.jar

2、启动

默认情况下,arthas只listen 127.0.0.1,所以如果想从远程连接,则可以使用 

--target-ip参数指定listen的IP

java -jar arthas-boot.jar 默认127.0.0.1

或者

java -jar arthas-boot.jar --target-ip 10.2.31.89 指定ip,可远程访问

 

选择进程,输入1



3、浏览器访问

http://10.2.31.89:8563/ 或者 http://10.2.31.89:3658/


两个端口 , 3658是 telnet, 8563是 http端口。


4、Arthas Properties

arthas.properties文件在arthas的目录下。

如果是自动下载的arthas,则目录在~/.arthas/lib/3.x.x/arthas/下面

如果是下载的完整包,在arthas解压目录下


5.通过tunnel server连接的方式

为什么要用tunnel server?

在流式计算里,Java进程可以是在不同的机器启动的,想要使用Arthas去诊断会比较麻烦,因为用户通常没有机器的权限,即使登陆机器也分不清是哪个Java进程


5.1 先在本地下载tunnel server

下载地址 https://github.com/alibaba/arthas/releases

启动tunnel server

java -jar arthas-tunnel-server-3.5.3-fatjar.jar

访问http://10.2.21.32:8080/

5.2 在服务机器上启动arthas

./as.sh --target-ip 10.2.31.89 --tunnel-server 'ws://10.2.21.32:7777/ws'

生成的id即agentid,用于tunnel server连接


5.3 连接

输入agentid,成功连接


6 基础命令

https://arthas.aliyun.com/doc/commands.html


help 查看命令帮助信息cls 清空当前屏幕区域session 查看当前会话的信息reset 重置增强类,将被 Arthas 增强过的类全部还原,Arthas 服务端关闭时会重置所有增强过的类version 输出当前目标 Java 进程所加载的 Arthas 版本号history 打印命令历史quit 退出当前 Arthas 客户端,其他 Arthas 客户端不受影响stop 关闭 Arthas 服务端,所有 Arthas 客户端全部退出keymap Arthas快捷键列表及自定义快捷键dashboard 当前系统的实时数据面板thread 查看当前 JVM 的线程堆栈信息heapdump 类似jmap,只dump存活 --livejad 查看源码

举例:jad查看源码


更多命令等待大家自己去探索。


7总结

对于程序员,对于一个系统来说,程序 Bug、性能问题不可避免,如何快速地分析找到问题才是我们最终的目的,借助工具是我们排查问题的一种很好的手段,当然用什么工具因人而异,好的工具使我们事半功倍。如果你也在排查性能或者各种线上问题,不妨试试 Arthas。Java 修炼之道,道阻且长,继续努力


小小支持一下,点赞+在看 关注公众号,回复666,领取干货


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存