阿里开源性能监控神器Arthas

简介: 阿里开源性能监控神器Arthas,帮助你快速排查线上问题

1 Arthas是什么?

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

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

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

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

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

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

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

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

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

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

2 Arthas安装下载

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

或者官网下载压缩包

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

3 启动

默认情况下,arthas只监听 127.0.0.1,所以如果想从远程连接,则可以使用 --target-ip参数指定listen的IP

java -jar arthas-boot.jar   #默认127.0.0.1

或者

java -jar arthas-boot.jar --target-ip 172.22.37.21   #指定ip,可通过Web Console远程访问

说明:本案例因为用的是阿里云服务器,公网ip是通过NAT映射到了云服务器上。由于本地并不存在对应ip网卡,因此绑定的是内外ip,远程访问Web Console用外网ip


选择进程,输入1

4 控制台访问

http://60.205.187.137:8563//

或者

http://60.205.187.137:3658/

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

5 关于配置

arthas.properties文件在arthas的目录下。
如果是自动下载的arthas,则目录在~/.arthas/lib/3.x.x/arthas/下面
如果是下载的完整包,在arthas解压目录下

6 命令

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

7 tunnel server

为什么要用tunnel server?
在流式计算里,Java进程可以是在不同的机器启动的,想要使用Arthas去诊断会比较麻烦,因为用户通常没有机器的权限,即使登陆机器也分不清是哪个Java进程
通常情况下,生产的机器都不会是一个,大部分是集群模式,利用tunnel server我们就可以把所有集群节点都管理起来

7.1下载tunnel server

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

启动tunnel server

java -jar arthas-tunnel-server-3.6.3-fatjar

默认会生成一个密码,后续可用于登录tunnel-server控制台

访问http://60.205.187.137:8080/ ,目前还没有应用被attach

7.2在服务机器上启动两个应用

说明:这里我的应用已经集成了Arthas,启动自动attach到服务,无需单独启动arthas去attach,
关于SpringBoot集成arthas参考https://javaessay.cn/pages/f6a4ce/#_1-%E5%88%9B%E5%BB%BAspringboot%E9%A1%B9%E7%9B%AE
通过IDEA直接启动或者通过下面脚本启动:

启动应用1

java -jar arthas-demo-0.0.1-SNAPSHOT.jar 

properties配置

server.port=8081
arthas.ip=127.0.0.1
arthas.http-port=8563
arthas.telnet-port=3658
arthas.agent-id=arthas_fire_1
arthas.tunnel-server=ws://127.0.0.1:7777/ws
arthas.outputPath=arthas-output
logging.config=classpath:log4j2.xml

启动应用2

java -jar arthas-demo-0.0.2-SNAPSHOT.jar 

properties配置

server.port=8082
arthas.ip=127.0.0.1
arthas.http-port=8564
arthas.telnet-port=3659
arthas.agent-id=arthas_fire_2
arthas.tunnel-server=ws://127.0.0.1:7777/ws
arthas.outputPath=arthas-output
logging.config=classpath:log4j2.xml

配置说明

  • arthas.agent-id :agentid,用于连接tunnel server ,不指定则自动生成的id即agentid,用于tunnel server连接

7.3连接

输入agentid,成功连接

7.4 通过Spring Boot的Endpoint查看agent节点

  • 用户名:arthas
  • 密码:即刚刚启动生成的密码

7.5查看所有应用

8基础命令

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存活 --live
jad  查看源码
profiler 生成火焰图

参考:

官网:https://arthas.aliyun.com/en-us/

文档:https://arthas.aliyun.com/doc/

GitHub:https://github.com/alibaba/arthas

目录
相关文章
|
Arthas 监控 Java
开源Java诊断工具Arthas:开篇之watch实战
还在为排查Java程序线上问题头痛吗,看我们用阿里开源的诊断神器 Arthas 来帮您
536 1
|
Arthas 监控 Java
Jvm性能调优+监控工具Arthas【阿里开源】
Jvm性能调优+监控工具Arthas【阿里开源】
1003 0
|
2月前
|
Arthas Java 测试技术
Java字节码文件、组成,jclasslib插件、阿里arthas工具,Java注解
Java字节码文件、组成、详解、分析;常用工具,jclasslib插件、阿里arthas工具;如何定位线上问题;Java注解
Java字节码文件、组成,jclasslib插件、阿里arthas工具,Java注解
|
存储 监控 Cloud Native
阿里性能监控引擎建设之路
阿里巴巴智能引擎事业部自研的 Khronos 系统是阿里内部接入规模最大的性能数据存储引擎。Khronos 支持动态生命周期的存储计算分离架构,采用 schemaless 的 data model 设计,在万亿数据规模下为业务提供易用、高效、经济的服务,团队近期的优化工作也被国际学术会议CIKM2023收录。本⽂总结了Khronos 在性能监控领域遇到的技术挑战,以及在这个场景下的一些价值判断。
|
Arthas Java 测试技术
服务端接口响应慢怎么定位?阿里开源工具arthas帮你解决。
接口中又调用了三个方法,分别sleep了1秒,3秒,6秒,模拟代码逻辑耗时。 然后先下载arthas
|
Arthas 消息中间件 监控
Alibaba开源Java诊断工具Arthas简单介绍
Alibaba开源Java诊断工具Arthas简单介绍
616 0
Alibaba开源Java诊断工具Arthas简单介绍
|
Arthas 消息中间件 监控
测试和性能监控神器 JMH & Arthas
测试和性能监控神器 JMH & Arthas
|
Arthas 监控 数据可视化
实战!使用 阿里 Arthas 工具分析 CPU 飙高
实战!使用 阿里 Arthas 工具分析 CPU 飙高
实战!使用 阿里 Arthas 工具分析 CPU 飙高
|
6月前
|
Arthas 监控 Java
Java 诊断利器 Arthas使用
Java 诊断利器 Arthas使用
213 0
|
6月前
|
Arthas 监控 Java
Arthas 可以用于监控和诊断在 Windows 系统下部署的 Tomcat 服务
Arthas 可以用于监控和诊断在 Windows 系统下部署的 Tomcat 服务
833 2