Arthas,7000 字入门篇

Arthas,7000 字入门篇,第1张

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

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

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

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

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

打印帮助信息

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

1、在 D: 下创建 Arthas 目录,在windows命令窗口下,使用curl命令下载阿里服务器上的jar包,大小138k。

2、使用 java 启动 arthas-boot.jar,来安装 arthas,大小约10M。运行此命令会发现java进程,输入1按回车。则自动从远程主机上下载 Arthas到本地目录。

注意:启动 Arthas 的时候一定要先启动一个 Java 进程。

3、查看按照好的目录

如果下载速度比较慢,可以尝试用阿里云的镜像仓库

1. 比如要下载3.5.4版本,下载的url是:

2. 解压后,在文件夹里有arthas-boot.jar,直接用java -jar的方式启动:

注:如果是Linux,可以使用以下命令解压到指定的 arthas目录

删除下面文件:

直接删除user home下面的.arthas和logs/arthas目录

命令

注意 :在 Windows 中启动 arthas 捕获进程的时候可能会出现如下的报错

直接将启动命令换成

Arthas目前支持Web Console,用户在attach成功之后,可以直接访问:http://127.0.0.1:3658/。

可以填入IP,远程连接其它机器上的arthas。

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

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

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

获取到 arthas-demo进程的 Main Class

thread 14 会打印线程 ID 14的栈。如果是 thread 1会打印线程ID 1的栈,通常是main函数的线程。

thread 1 示例图

3. 通过jad来反编译Main Class

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

按 Q 或者 Ctrl+C 退出

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

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

查看命令帮助信息,help 命令会打印出所有可以用的命令

作用

打印文件内容,和linux里的cat命令类似;如果没有写路径,则显示当前目录下的文件。

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

举例

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

返回当前的工作目录,和linux命令类似

pwd: Print Work Directory 打印当前工作目录

清空当前屏幕区域

查看当前会话的信息

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

version

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

history

打印命令 历史

quit

退出当前 Arthas 客户端,其他 Arthas 客户端不受影响

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

keymap

Arthas快捷键列表及自定义快捷键

Arthas 命令行快捷键

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

数据说明

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

举例

展示当前最忙的前3个线程并打印堆栈,thread -n 3

当没有参数时,显示所有线程的信息,thread ;当显示1号线程的运行堆栈,thread 1

找出当前阻塞其他线程的线程,有时候我们发现应用卡住了, 通常是由于某个线程拿住了某个锁, 并且其他线程都在等待这把锁造成的。为了排查这类问题, arthas提供了thread -b, 一键找出那个罪魁祸首。thread -b

指定采样时间间隔,每过1000毫秒采样,显示最占时间的3个线程thread -i 1000 -n 3

查看处于等待状态的线程,thread --state WAITING

查看当前 JVM 的信息

查看和修改JVM的系统属性

小结

查看当前JVM的环境属性(System Environment Variables)

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

更新指定的选项

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

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

官网:

参数说明

举例

小结

查看JVM已加载的类信息,“Search-Class” 的简写,这个命令能搜索出所有已经加载到 JVM 中的 Class 信息

sc 默认开启了子类匹配功能,也就是说所有当前类的子类也会被搜索出来,想要精确的匹配,请打开options disable-sub-class true开关

打印出类的 Field 信息

查看已加载类的方法信息

“Search-Method” 的简写,这个命令能搜索出所有已经加载了 Class 信息的方法信息。

显示 String 类加载的方法,sm java.lang.String

显示String中的toString方法详细信息,sm -d java.lang.String toString

反编译指定已加载类源码

编译 java.lang.String,jad java.lang.String

反编绎时只显示源代码,默认情况下,反编译结果里会带有 ClassLoader信息,通过--source-only选项,可以只打印源代码。方便和 mc/redefine 命令结合使用。 jad --source-only java.lang.Object

反编译指定的函数, jad demo.MathGame main

Memory Compiler/内存编译器,编译.java文件生成.class

加载外部的.class文件,redefine到JVM里

从上面可以得出,我们在 main() 方法新增的内容并没有生效,在 run() 方法新增的内容生效了。

3. jvm相关命令

4. class和classloader相关命令

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

Arthas 是Alibaba开源的Java诊断工具。当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:

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

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

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

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

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

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

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

Arthas支持jdk6+,多种系统版本,采用命令行交互模式,同时提供丰富的tab自动补全功能,进一步方便我们进行问题的定位和诊断

1.2、快速安装

1.2.1、Linux下按

下载arthas-boot.jar,在使用java -jar方式启动即可。

命令

**注意:**在进行第二条命令之前,先运行一个Java程序在内存之中,否则会报错

2、快速入门

2.1、attach一个进程

目标:

1、执行一个jar包

2、通过arthas来attach来追踪

3、进行常用的命令 *** 作

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

总结:

1、启动进程

2、启动arthas-boot.jar,进入启动的进程

3、不但可以通过命令行的方式来 *** 作arthas也可以通过浏览器来访问arthas

2.2、常用命令接触

1、dashboard仪表板

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

3、通过jad来反编译Main Clas

4、wathch具体方法

2.2.1.、dashboard仪表板

在这里插入图片描述

2.2.2、通过thread命令来获取到arthas-demo进程的Main Class

在这里插入图片描述

2.2.3、通过jad反编译Main Class

在这里插入图片描述

2.2.4、watch监视

demo.MathGame primeFactors:

demo.MathGame:包名+类名

primeFactors:方法名

returnObj:返回参数的表达式

2.2.5、退出arthas

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

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

在这里插入图片描述

2.3、基础命令1

1、help:查看所有帮助信息

2、cat:显示文本文件内容

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

在这里插入图片描述

4、pwd:显示当先目录的目录地址

5、cls:清屏

2.4、基础命令2

1、session:查看当前会话信息

在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

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

4、quit:退出当前Arthas客户端,其他Arthas客户端不受影响。

5、stop:关闭Arthas服务端,所有Arthas客户端全部退出。

6、keymap:Arthas快捷键列表及自定义快捷键

7、history:和linux系统作用一样 打印命令历史

3、JVM相关命令

1、dashboard

在这里插入图片描述

2、thread 线程相关:查看当前jvm的线程堆栈的信息

在这里插入图片描述

3、jvm 虚拟机相关

4、sysprop 系统属性相关

5、sysenv:查看当前jvm的环境属性

在这里插入图片描述

6、vmoption:查看、更新vm诊断相关的参数

7、getstatic:方便的查看类的静态属性

语法:getstatic 类名 属性名

8、ognl

在这里插入图片描述

3.1、反编译 jad

比如编译string类

–source-only : 只显示源码

只反编译指定的方法

xx 就是方法名

3.2、内存编译mc

内存编译器,编译.java文件生成.class

在这里插入图片描述

在这里插入图片描述

4、Arthas进阶

4.1、目标

类与类加载器

monitor、watch、trace、stack等核心命令的使用

火焰图的生存

arthas实战案例

4.2、dump

将已加载的字节码文件保存到特定的目录下,logs/arthas/classdump/

在这里插入图片描述

举例:

在这里插入图片描述

4.3、classloader

获取类加载器的信息

作用:

将jvm中所有的classloader的信息统计出来,并可以展示继承树,urls等。

让指定的classloader去getResources,打印出所有查找到的resources的url。

在这里插入图片描述

4.4、monitor

监控指定类中方法的执行情况

作用:

在这里插入图片描述

在这里插入图片描述

4.5、watch(重要)

观察到指定方法的调用情况

作用:

方法执行数据观测,方便观测到指定方法的调用情况

能观察到的范围:返回值、抛出异常、入参。通过编写OGNL表达式进行对应变量的查看

在这里插入图片描述

在这里插入图片描述

只查看第一个参数小于0的情况

在这里插入图片描述

文章知识点与官方知识档案匹配

Java技能树首页概览

89145 人正在系统学习中

打开CSDN,阅读体验更佳

java应用线上诊断神器--Arthas_linyb极客之路的博客

c、保存好/tmp/UserServiceImpl.java之后,使用mc(Memory Compiler)命令来编译,并且通过–classLoaderClass参数指定ClassLoader mc--classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader/tmp/UserServiceImpl.java-d/tmp ...

继续访问

java线上诊断工具,Java线上诊断神器Arthas-1_Skogkatt的博客-CSDN...

Arthas 是Alibaba 开源的一款线上诊断工具,相比Java 自带的jinfo, jmap,jstat 等工具更方便(起码不用记那么多参数),而且利用字节码增强技术,可以很好的对线上的问题进行定位以及解决,不用再为生产或者测试环境无法debug而感到无能为力。...

继续访问

最新发布 Arthas常用命令

arthas指令大全

继续访问

Arthas在线java进程诊断工具 在线调试神器

Arthas在线java进程诊断工具 在线调试神器 tag: java 诊断 堆栈 在线调试 耗时 死锁 arthas 阿里巴巴 Arthas 是 Alibaba 开源的Java诊断工具,深受开发者喜爱。 官网文档:https://arthas.aliyun.com/doc/ 当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决: 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception? 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了? 遇到问题无法在.

继续访问

Java在线诊断利器之Arthas_Java老K的博客

Arthas是阿里在2019年9月份开源的一款java在线诊断工具,能够分析、诊断、定位java应用问题,例如:jvm信息、线程信息、搜索类中的方法、 跟踪代码执行、观测方法的入参和返回参数等等。 Arthas最大的特点是能在不修改代码和不需要重新发布的...

继续访问

java线上诊断神器 --Arthas__小鱼塘的博客_java网络诊断

java线上诊断神器 --Arthas 最近在工作中用到的一个非常很好的线上诊断,分析问题的神器,再次记录一下: 官方文档:简介 | arthas GitHub 地址:GitHub - alibaba/arthas: Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas...

继续访问

Arthas使用教程(8大分类)

1、基础命令。2、JVM相关。3、类与类加载器。4、option全局选项。5、项目中使用案例。

继续访问

Arthas介绍

这篇文章为大家推荐一个为Java应用程序排查问题的非常好用的工具:Arthas,首先声明一下,这边文章并不是教大家如何使用,它只是一个搬运工,在Arthas的github上已经有非常详细的使用教程了。 Arthas(阿尔萨斯)是阿里巴巴开源的Java诊断工具,深受开发者喜爱 当你遇到以下类似问题而束手无策时,Arthas统统可以帮你解决 某个类是从哪个jar包加载的,为什么会报各种类相关的Exc...

继续访问

Arthas - Java线上诊断工具_是良辰的博客

java -jar arthas-boot.jar 启动之后就可以看到一个java程序列表,像我这就是只有一个java程序在跑,就是当前根目录下面的app.jar 选择1,即可对app.jar进行监控诊断。 PS:如果是虚拟机,直接在应用服务器上面执行上面的命令,如果是docke...

继续访问

java线上诊断工具Arthas-实战案例_小姐姐修灯泡吗的博客

首先我就来简单介绍下他的作用:(粘贴官网)Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱。在线排查问题,无需重启动态跟踪Java代码实时监控JVM状态。 Arthas 支持JDK 6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的...

继续访问

arthas 使用教程

arthas安装使用 首先是安装,说白了其实把他当成一个工具来用就行了,你什么服务需要在线进行性能情况的一个监测和性能的瓶颈排查。第三步启动arthas-boot.jar,启动的时候要注意你需要监测的java是启动的可以用jps-l命令查看你的java服务。第二步把jar包上传到你需要进行java性能监测的服务器上。线上正式环境把他当成一个排查慢问题的工具还是很好用的。以上就是启动服务了下面开始介绍常用的一些排查命令。...

继续访问

Arthas

Arthas.md https://alibaba.github.io/arthas/ 当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决: 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception? 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了? 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗? 线上遇到某个用户的数据处理有问题,...

继续访问

Java线上问题诊断工具Arthas_星光Starsray的博客

java -jar arthas-boot.jar //启动 当看到控制台出现arthas的标志,表明启动成功!注意此时已经进入控制台,主要是arthas的命令使用。 [root@xxptweb01 arthas]# java -jar arthas-boot.jar

继续访问

【Java】性能问题诊断利器Arthas --常用命令示例_叹了口丶气的博客-C...

Arthas 是一款阿里开源的 Java 线上诊断工具,功能强大,可以在不修改代码或者重启服务的情况下快速定位线上问题。 官方文档:Arthas官网 二、安装 从官网下载 Arthas 全量包安装(因为快速安装可能因网络原因下载失败),然后用 java -jar 方...

继续访问

Java诊断工具Arthas使用说明

Arthas 是Alibaba开源的Java诊断工具,Arthas支持JDK 6+,支持Linux/Mac/Windows,支持命令行交互模式、 Tab 自动补全功能,方便进行问题的定位和诊断。

继续访问

JVM性能调优篇07-阿里巴巴Arthas工具详解

阿里巴巴Arthas工具详解

继续访问

Arthas 是Alibaba开源的Java诊断工具

Arthas是Alibaba开源的Java诊断工具,深受开发者喜爱。 当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决: 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception? 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了? 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗? 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现! 是否有一个全局视角来查看系统的运行...

继续访问

JVM之GC 调优工具 Arthas 实战使用(二)

Arthas 是 Alibaba 开源的 Java 诊断工具,深受开发者喜爱。Arthas 支持 JDK 6以上版本,支持 Linux/Mac/Windows,而且这些环境的命令都一样,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进行问题的定位和诊断 官方文档参考 https://alibaba.github.io/arthas/ 一、下载和安装 不需要安装,就是一个 jar 包 curl -O https://alibaba.github.io/arthas/arthas-bo

继续访问

Arthas详解

文章目录概述安装快速安装使用`arthas-boot`(官网推荐)使用`as.sh`全量安装把Arthas安装到基础镜像里卸载使用命令详解基础命令helpcatechogrepbase64teepwdclsversionhistorykeymap后台异步命令相关快捷键会话相关quitstopsessionresetjvm相关dashboardthreadjvmsyspropsysenvvmoptionperfcounterloggergetstaticognlmbeanheapdumpvmtoolclass

继续访问

Arthas基础

Arthas:快速入门

继续访问

Arthas入门到精通

Arthas是Alibaba开源的一款Java诊断工具,方便开发者在线排查问题,无需重启,同时可以跟踪Java代码,实时监控JVM状态,目前Arthas仅支持JDK6+,支持Linux/Mac/Windows,采用命令行交互模式,具有 Tab 自动补全功能,便于开发者进行快速定位和诊断问题。 https://arthas.aliyun.com/arthas-boot.jar 离线全量下载(如果服务器没有外网可以采用这种情况) https://arthas.aliyun.com/download/late

继续访问

阿里Java诊断工具 arthas - 介绍及指令大全

一、arthas Arthas` 是Alibaba开源的Java诊断工具,深受开发者喜爱。 当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决: 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception? 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了? 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗? 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现! 是否有一个全局视角来查看系统的运行状况? 有什么办法可以监控到

继续访问

java诊断神器 arthas(阿尔萨斯)

java诊断神器 arthas(阿尔萨斯) 官网地址:https://arthas.aliyun.com/doc/en/index.html 1、快速开始 1.1、windows版本安装 # 命令行输入 curl -0 https://arthas.aliyun.com/arthas-boot.jar --output arthas-boot.jar # 启动arthas 注意:启动前已经要有java进程运行,否则无法进入 java -jar arthas-boot.jar --telnet-por

继续访问

帮助定位Java方法优化之arthas端口被占用解决的办法

另起一个端口号 启动arthas命令的后面加上端口号的相关参数 java -jar arthas-boot.jar --telnet-port 端口号 --http-port -1 关闭占用端口的服务 先进入占用端口的服务,然后输入stop将它停掉就可以了 注:请再每一次使用之后使用stop命令退出,这样也省掉一些不必要的麻烦!!! ...

继续访问

Java 诊断工具之 Arthas

Arthas 是 Alibaba 开源的 Java 诊断工具。Ta 可以动态跟踪 Java 代码,实时监控 JVM 状态,可以在不中断程序执行的情况下轻松完成 JVM 相关问题排查工作。支持 JDK 6+,支持 Linux/Mac/Windows。

继续访问

Arthas-java在线调试工具的使用

一、arthas能干什么? 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception? 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了? 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗? 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现! 是否有一个全局视角来查看系统的运行状况? 有什么办法可以监控到JVM的实时运行状态? 怎么快速定位应用的热点,生成火焰图? 怎样直接从JVM内查找某个类的实例? Arthas支持JDK 6+

继续访问

Java线上诊断工具Arthas

概述 Arthas是一个开源的线上诊断工具,可以实时查看线上代码运行情况,详情参考Arthas 命令列表 jad命令(获取已加载类的源码) //主要用来看已经加载了类的源码,一般用于动态加载的class的源码比较方便 [arthas@773]$ jad com/example/jvm/Hello ClassLoader: +-sun.misc.Launcher$AppClassLoader@18b4aac2 +-sun.misc.Launcher$ExtClassLoader@362d9..

继续访问

java 线上诊断命令

java

学习

无限力量:thereisnospoon(魔法无限)

somebodysetupusthebomb =立即战败

ItVexesMe =不会被判定获胜

StrengthAndHonor =不会被判定战败

thereisnospoon =法力无限

WhoIsJohnGalt =研发加速

WarpTen =快速建筑

SharpAndShiny =建筑物升级

Synergy =科技全开

WarpTen 快速建造

WhosYourDaddy 无敌

ThereIsNoSpoon 魔力无限

ISeeDeadPeople 显示地图

SharpAndShiny 升级

SombodySetUpUsTheBomb 击败敌人

在游戏中按下回车,输入以下密码后再按下回车即可:

iseedeadpeople 地图全开

allyourbasearebelongtous 立即获胜

somebodysetupusthebomb 立即失败

thereisnospoon 无限魔法

whosyourdaddy 无敌模式

strengthandhonor 在胜利或者失败了之后继续玩

warpten 快速建设

keyseroze 增加500金钱

iocainepowder 快速灭亡

leafittome 增加500木材

pointbreak 获得食物

thedudeabides 安静下来

itvexesme 拒绝胜利

whoisjohngalt 研究

synergy 科技树全开

sharpandshiny 升级

riseandshine 设置早上时间

lightsout 设置晚上时间

daylightsavings (hour) 设置一天的指定时刻

daylightsavings 白昼连续开关

motherland (race) (level) 选关


欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/bake/11255339.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存