Arthas的使用与进阶

  • Arthas使用与进阶
  • 一、概述
  • 二、快速安装
    • windows下安装arthas
    • Linux下安装arthas
    • 卸载
      • 在Linux/Unix/Mac平台
      • Windows平台
  • 三、快速入门:attach一个进程
    • 1、准备
    • 2、启动arthas
  • 四、快速入门:常用命令接触
    • 命令介绍
    • 1、dashboard仪表板
    • 2、通过Thread命令来获取到arthas的进程的Main Class
    • 3、通过jad反编译Main Class
    • 4、watch监视
    • 5、退出arthas
  • 五、基础命令
    • 1、help
    • 2、cat
    • 3、grep
    • 4、pwd
    • 5、cls
    • 6、session
    • 7、reset
    • 8、version
    • 9、history
    • 10、quit
    • 11、stop
    • 12、keymap
    • 13、arthas命令行快捷键
    • 后台异步命令相关快捷键
  • 六、JVM相关命令
    • 1、dashboard
    • 2、Thread
    • 3、jvm、sysprop
    • 4、sysprop
    • 5、sysenv
    • 6、vmoption
    • 7、getstatic
    • 8、ognl

Arthas使用与进阶

一、概述

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

Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。

Arthas(阿尔萨斯)支持JDK6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的tab自动补全功能,进一步方便进行问题的定位和诊断。

二、快速安装

下载arthas-boot.jar,然后使用java -jar的方式启动。

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

windows下安装arthas

如图,我这里先进入F盘,新建一个文件夹,用来存放Arthas文件。

然后进入该目录,下载Arthas。

注意,在运行第二条命令之前,先运行一个java进程在内存中,不然会出现找不到java进程的错误。

打印帮助信息

java -jar arthas-boot.jar -h

如果下载速度比较慢,可以使用aliyun的镜像

java -jar arthas-boot.jar --repo-mirror aliyun --use-http

然后我们使用java -jar arthas-boot.jar运行Arthas。

这时Arthas会发现我们本地是没有Arthas的安装包的,这时会提示我们选择,这里我们选择2,1是我们在本地运行的Java进程。

选择2就会从网上去下载Arthas,从maven仓库中下载。

然后我们可以根据输出日志的文件存放路径,找到刚才下载的文件,我这里C:\Users\zal\.arthas\lib\3.6.6\arthas,是如图:

安装好之后会在C:\Users\zal该路径下生成两个文件夹,一个是.arthas,一个是logs,安装好的界面如图:

Linux下安装arthas

linux下安装arthas其实是和windows下安装的过程差不多。

首先下载jar包,使用命令curl -O https://arthas.aliyun.com/arthas-boot.jar

下载完成之后启动jar包,如图:

我们随便选择一个java进程之后,就会进入arthas的下载。

安装好的arthas文件会隐藏,所以我们使用ls -a来查看。

退出arthas

quit

卸载

在Linux/Unix/Mac平台

删除下面的文件

rm -rf ~/.arthas/
rm -rf ~/logs/arthas

Windows平台

直接删除user home下面的.arthaslogs/arthas目录即可。

小结

因为jar包是绿色的,要卸载的话,直接删除两个目录即可。

1、arthas安装目录

2、arthas的日志记录目录

三、快速入门:attach一个进程

目标:通过案例快速入门

  • 执行一个jar包
  • 通过arthas来attach
  • 进行几种常用的命令操作

步骤

1、准备

我们直接使用arthas安装好之后自带的jar包进行快速入门,如图。

math-game是一个简单的程序,每隔一秒生成一个随机数,再执行质因数分解,并打印出分解结果。

然后我们重新打开一个连接窗口,去进行使用arthas操作。

2、启动arthas

(1)如果粘附成功,在math-game.jar的那个窗口中会出现日志记录的信息。

(2)如果端口号被占用,也可以通过以下命令换成另一个端口号执行

java -jar arthas-boot.jar --telnet-port 9992 -http-port -1

我们也可以通过浏览器访问arthas,如图,访问该地址

访问127.0.0.1:3658,注意这里的ip地址是127.0.0.1,不是你的服务器ip或者是虚拟机ip。

我们也可以直接在浏览器中直接输入命令进行操作。

小结

  • 启动被诊断进程
  • 启动arthas-boot.jar,粘贴上面的进程
  • 不但可以通过命令行的方式来操作arthas,也可以通过浏览器来进行访问。

四、快速入门:常用命令接触

目标

  • dashboard仪表盘
  • 通过thread命令来获取到math-game进程的 Main Class
  • 通过jad来反编译Main Class
  • watch

命令介绍

1、dashboard仪表板

输入dashboard,按回车/enter ,会展示当前进程的信息,按ctrl + c可以中断执行。

注:输入前面部分的字母,按tab可以自动补全命令

  • 第一部分是显示JVM中运行的所有线程:所在线程组、优先级、线程状态、cpu占用率、是否是后台进程等
  • 第二部分显示的JVM内存的使用情况
  • 第三部分是操作系统的一些信息和Java版本号

q或者ctrl+c可以退出。

cls清屏

2、通过Thread命令来获取到arthas的进程的Main Class

使用命令Thread查看所有线程。

使用命令thread 1会打印线程ID为1的线程的栈,通常是Main函数的线程。

3、通过jad反编译Main Class

4、watch监视

通过watch命令来查看demo.MathGame#primeFactors函数的返回值:

q或者ctrl + c可以停止监视。

watch demo.MathGame primeFactors returnObj

5、退出arthas

如果只是退出当前的连接,可以使用quit或者exit命令,arthas到目标进程上的arthas还会继续运行,端口会保持开放,下次连接时可以直接连接上。

如果想完全退出arthas,可以执行stop命令。

小结

五、基础命令

1、help

查看命令帮助信息

2、cat

打印文件内容,和linux中的cat命令类似

如果没有写路径,则显示当前目录下的文件

3、grep

匹配查找,和linux中的grep命令类似,但它只能用于管道命令。

只显示包含java字符串的行系统属性
sysprop | grep java

显示包含java字符串的行和行号的系统属性
sysprop | grep java -n

显示包含system字符串的10行信息
thread | grep system -m 10

使用正则表达式,显示包含2个o字符的线程信息
thread | grep -e "o+"

4、pwd

返回当前的工作目录

5、cls

清空当前屏幕区域

小结

6、session

查看当前会话的信息

7、reset

重置增强类,将被arthas增强过的类全部还原,arthas服务端关闭时会重置所有增强过的类。

还原指定类
reset Test
还原所有以List结尾的类
reset *List
还原所有的类
reset

8、version

输出当前目标Java进程所加载的Arthas版本号

9、history

打印历史命令

10、quit

退出当前arthas客户端,其它arthas客户端不受影响

11、stop

关闭arthas服务端,所有客户端全部退出

12、keymap

arthas快捷键列表以及自定义快捷键

13、arthas命令行快捷键

  • 任何时候的tab键,会根据当前的输入给出提示
  • 命令后敲 - 或 – ,然后按tab键,可以展示出此命令具体的选项

后台异步命令相关快捷键

  • ctrl + c 终止当前命令
  • ctrl + z 挂起当前命令,后续可以 bg/fg 重新支持此命令,或kill掉
  • ctrl + a 回到行首
  • ctrl + e 回到行尾

六、JVM相关命令

1、dashboard

显示当前系统的实时数据面板,按q或者ctrl + c退出

dashboard    Overview of target jvm's thread, memory, gc, vm, tomcat info.

  • ID:Java级别的线程ID,注意这个ID不能跟jstack中的naviteID一一对应
  • NAME:线程名
  • GROUP:线程组名
  • PRIORITY:线程优先级,1-10之间的数字,越大表示优先级越高
  • STATE:线程的状态
  • CPU%:线程消耗的cpu占比,采样100ms,将所有的线程在这100ms内的cpu使用量求和,再算出每个线程的cpu使用占比。
  • TIME:线程的运行总时间,数据格式为 分:秒
  • INTERRUPTED:线程当前的中断位状态
  • DAEMON:是否是daemon线程

2、Thread

查看当前JVM的线程堆栈信息

查看处于等待状态的线程

thread --state WAITING

3、jvm、sysprop

查看当前JVM的信息

线程相关

  • COUNT:JVM当前活跃的线程数
  • DAEMON-COUNT:JVM当前活跃的守护线程
  • PEAK-COUNT:从JVM启动开始曾经活着的最大线程数
  • STARED-COUT:从JVM启动开始总共启动过的线程次数
  • DEADLOCK-COUNT:JVM当前死锁的线程数

文件描述符相关

  • MAX-FILE-DESCRIPTOR-COUNT:JVM进程最大可以打开的文件描述符
  • OPEN-FILE-DESCRIPTOR-COUNT;JVM当前打开的文件描述符

4、sysprop

查看和修改JVM的系统属性

# 查看所有属性
sysporp
查看单个属性,支持通过tab补全
sysporp java.version
修改单个属性
sysporp user.country
user.country=USsysporp user.country CN

5、sysenv

查看当前JVM的环境属性(system environment variables)

查看所有环境变量
sysenv
查看单个环境变量
sysenv USER

6、vmoption

查看、更新VM诊断相关的参数

查看所有的选项
vmoption
查看指定的选项
vmoption PrintGCDetails
更新指定的选项
vmoption PrintGCDetails true

7、getstatic

通过getstatic命令可以方便的查看类的静态属性

getstatic 类名 属性名
显示demo.MathGame类中的静态属性random
getstatic demo.MathGame random

8、ognl

执行ognl表达式,,这是从3.0.5版本新增的功能

调用静态函数
ognl '@java.lang.System@out.println("helloworld")'
获取静态类的静态字段
ognl '@demo.MathGame@random'
执行多行表达式,赋值给临时变量,返回一个list
ognl '#value1=@System@getProperty("java.home"),#value2=@System@getProperty("java.runtime.name"),{#value1,#value2}'

Arthas的使用与进阶相关推荐

  1. 「技术工具」阿里开源Java在线诊断工具 Arthas 进阶教程

    Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱. 本教程会以一个普通的Spring Boot应用为例,演示Arthas命令的详细用法. Github: https://githu ...

  2. Arthas进阶教程

    整理自 https://alibaba.github.io/arthas/arthas-tutorials?language=cn&id=arthas-advanced 1.启动demo 下载 ...

  3. gateway 内存溢出问题_带你学习jvm java虚拟机 arthas/性能调优/故障排除/gc回收/内存溢出等...

    学完本课程,您将掌握: 内存溢出问题实战 CPU飙升问题实战 阿里巴巴Arthas在线诊断 Class字节详细拆解 手写类加载器.四种类加载器.双亲委托模型 对象创建.存储.访问.加载解析 性能调优. ...

  4. Java开源诊断工具 Arthas 发布v3.1.0

    Arthas Arthas 自2018年9月份上线以来「传送门」,已收获近万个star,感谢开发者们的认可.此次Arthas 3.1.0版本的发布,不仅带来大家投票出来的新LOGO,还带来强大的新功能 ...

  5. 阿里开源的Arthas竟然还不会用?最佳实践来了!

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取推荐书籍电子版 入门步骤 安装 https://arthas.gitee.i ...

  6. 尝试自动重定向的次数太多_阿里Arthas 3.1.0版本:在线教程、内存编译器和强大的自动补全...

    摘要: `Arthas`是Alibaba开源的Java诊断工具,深受开发者喜爱. 从Arthas上个版本发布,已经过去两个多月了,Arthas 3.1.0版本不仅带来大家投票出来的新LOGO,还带来强 ...

  7. Alibaba Arthas快速入门 简单易懂

    简介 Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load.内存.gc.线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参.异常,监测方法执 ...

  8. Java线上诊断工具:Arthas简单快速学习

    1.概述 1.1.Arthas(阿尔萨斯)可以做什么 Arthas 是Alibaba开源的Java诊断工具.当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决: 这个类从哪个 jar 包加载 ...

  9. Java诊断工具-Arthas入门与实践

    Java诊断工具-Arthas入门与实践 目录 Java诊断工具-Arthas入门与实践 什么是Arthas? Arthas能做什么? 我在哪里可以下载Arthas? 快速入门 1. 下载并运行mat ...

最新文章

  1. 图像处理:边缘提取算法(边缘提取算子总结)——Matlab代码实现
  2. .Net NPOI 根据excel模板导出excel、直接生成excel
  3. IDEA运行第一个Spring Boot应用程序
  4. Unable to execute dex: Multiple dex files define异常的解决办法
  5. 使用opencv_traincascade训练Haar、HOG、LBP Adaboost分类器
  6. B - Calculating Function
  7. 解决Error: undefined reference to `__android_log_print'
  8. 使用python 下载_使用python下载大量文件
  9. 信号处理深度学习机器学习_机器学习与信号处理
  10. python图标的演变_python day 22 CSS拾遗之箭头,目录,图标
  11. react 全选反选_js中怎么将createElement出来的复选框实现全选,全不选,反选效果?...
  12. 微软 SQL Server 2016 SP1 开发者版入驻 Windows 容器
  13. 能做多大的单片机项目程序开发,就代表了你的敲代码的水平
  14. Tomcat - SSL操作大全
  15. 计算机网络未来的发展和趋势论文,计算机网络发展论文范文
  16. 什么是Wiegand协议?什么是韦根26? 什么是韦根34?
  17. WebService调用接口传参失败问题解决
  18. java二级线程_计算机二级辅导:Java线程新特征(原子量)
  19. 鹏业安装算量软件合并计算项目操作
  20. C语言 之 if 语句

热门文章

  1. 未来计算机游戏,未来可追 ROG光刃G15游戏电脑首发登场
  2. torch使用tensorboard简明备忘录
  3. 同济七版高等数学(下册)习题及答案
  4. 如何让DEDECMS织梦的TAGS标签静态化
  5. node.js Stream(流) 和 EJS 模板引擎——0822
  6. 【每日新闻】北京明起将全面取消手机一卡通开卡费
  7. 活动报名|高等院校人工智能教学研讨会
  8. Texpad for mac(LaTeX编辑器)激活方法
  9. 故宫珍宝馆改陈再晾宝 二期春节前夕对外开放
  10. Flutter elevation属性名称的含义