Alibaba Arthas学习与使用

news2025/1/11 23:43:52

Alibaba Arthas学习与使用

目录

  • 下载安装
  • 卸载
  • 退出
  • 快捷键
  • 重点部分: 命令
    • dashboard
    • thread
    • jvm
    • sysprop
    • sysenv
    • vmoption
    • getstatic
    • ognl
    • sc
    • sm
    • jad
    • mc
    • redefine
    • dump
    • classloader
    • monitor
    • watch
    • trace
    • stack
    • tt
    • options
    • profiler

下载安装

# 下载
curl -O https://alibaba.github.io/arthas/arthas-boot.jar
# 启动arthas
java -jar arthas-boot.jar
# 如果端口号被占用(arthas已经粘附一个进程),可以换另一个端口号执行
java -jar arthas-boot.jar --telnet-port 9998 --http-port -1

卸载

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

退出

可以使用quit或exit命令,下次连接会自动连接上粘附的进程。stop退出结束连接。

快捷键

  • keymap 显示Arthas对应的快捷键
    在这里插入图片描述

重点部分: 命令

dashboard

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

在这里插入图片描述

thread

查看当前jvm的线程堆栈信息
在这里插入图片描述

jvm

查看当前JVM的信息

在这里插入图片描述

sysprop

查看和修改jvm的系统属性
在这里插入图片描述

sysenv

查看当前jvm的环境属性
在这里插入图片描述

vmoption

查看,更新jvm诊断相关的参数
在这里插入图片描述

getstatic

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

getstatic 类名 属性名

在这里插入图片描述

ognl

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

OGNl语法

https://commons.apache.org/proper/commons-ognl/language-guide.html

在这里插入图片描述
在这里插入图片描述

sc

查看jvm已加载的类信息,"Search Class"的缩写,这个命令可以搜索出所有已经加载到jvm中的class信息,sc默认开启了子类匹配功能,也就是说当前类的子类也会被搜索出来,想要精准匹配,需要打开 optionsdisable-sub-class true 的开关

在这里插入图片描述

sm

"Search Method"的缩写,搜索所有已经加载了class信息的方法信息。
sm命令只能看到由当前类声明的方法,父类无法看到

在这里插入图片描述

jad

反编译指定已加载类的源码
在这里插入图片描述

//反编译指定类
jad java.lang.String
//反编译指定类中的指定方法
jad java.lang.String trim

mc

在内存中把源代码编译成字节码

//编译
mc /root/Hello.java
//编译到指定目录
mc /root/Hello.java -d /tmp

redefine

把新生成的字节码文件在内存中执行,加载外部的.class文件,redefine到jvm里

注意:redefine后原来的类不可恢复,redefine有可能失败(比如增加了新的成员变量)
reset命令对redefine的类无效。如果想重置,需要redefine原始的字节码。
redefine命令和jad/watch/trace/monitor/tt等命令会冲突。执行完redefine之后,如果再执行上面提到的命令,则会把redefine的字节码重置。

redefine的限制

  • 不允许新增加成员变量和方法,只允许在原有的上面修改
  • 正在执行的函数,没有退出不能生效。

结合jad/mc命令使用

# 1.使用jad反编译demo.MathGame输出到/root/MathGame.java
jad --source-only demo.MathGame > /root/MathGame.java

# 2.按上面的代码编辑完,使用mc对内存中的新代码编译
mc /root/MathGame.java -d /root

# 3.使用redefine命令加载新的字节码
redefine /root/demo/MathGame.class

dump

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

在这里插入图片描述
在这里插入图片描述

classloader

获取类加载器信息,classloader 命令将jvm中所有classloader的信息统计出来,并可以展示继承树,urls等。可以让指定的classloader去getResources,打印出所有查找到的resources的url。对于ResourceNotFoundException异常比较有用。

在这里插入图片描述

在这里插入图片描述

monitor

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

在这里插入图片描述

在这里插入图片描述

watch

观察指定方法的调用情况,能观察到的范围:返回值、抛出的异常、入参,通过OGNL表达式进行对应变量的查看

在这里插入图片描述
在这里插入图片描述

trace

对方法内部调用进行跟踪,并输出方法路径上每个节点上的耗时
在这里插入图片描述

在这里插入图片描述

stack

输出方法被调用的调用路径

在这里插入图片描述

tt

time-tunnel 时间隧道
记录下指定方法每次调用的入参和返回值,并能对这些不同时间下调用的信息进行观测。

在这里插入图片描述
在这里插入图片描述

options

arthas全局开关

在这里插入图片描述

profiler

生成火焰图,profiler命令支持生成应用热点火焰图。本质上是通过不断采样,然后把采集结果生成火焰图。命令基本运行结构是profiler命令 [命令参数]

启动profiler

# 默认情况下生成的是cpu的火焰图,即event为cpu。可以用--event参数来指定
profile start
# 停止采样,并生成火焰图
profile stop

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/580286.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Apache Kafka - 如何实现可靠的数据传递

文章目录 可靠的数据传递导图 可靠的数据传递 Kafka 通过以下几个方面实现可靠的数据传递: 分区副本 - Kafka 的分区有多个副本,如果某个副本失效,其他副本可以继续服务。生产者重试 - 生产者在发送消息失败时会自动重试,一直到成功发送或者达到最大重试次数。批量确认 - 生产…

云服务器和专用服务器之间的区别

在当今数字化时代,服务器是构建和支持各种应用和服务的基础设施之一。随着技术的发展和需求的增加,出现了不同类型的服务器,其中最常见的是云服务器和专用服务器。本文将详细介绍云服务器和专用服务器之间的区别,以帮助您更好地了…

SpringSecurity从入门到实战

SpringSecurity从入门到实战 0. 简介 ​ Spring Security 是 Spring 家族中的一个安全管理框架。相比与另外一个安全框架Shiro,它提供了更丰富的功能,社区资源也比Shiro丰富。 ​ 一般来说中大型的项目都是使用SpringSecurity 来做安全框架。小项目有…

【LAMP架构】

目录 一、LAMP架构1、组件作用 二、编译安装Apache httpd服务2、安装环境依赖包3、配置软件模块4、编译及安装5、优化配置文件路径,并把httpd服务的可执行程序文件放入路径环境变量的目录中便于系统识别6.添加httpd系统服务7.修改httpd 服务配置文件8.浏览器访问验证…

【云原生|探索 Kubernetes 系列 5】简化 Kubernetes 的部署,深入解析其工作流程

前言 大家好,我是秋意零。 在前面 4 个章节中,我们充分了解了容器技术和 Kubernes 原生时代引擎的架构和设计思想,今天分享的主要内容是,探索 Kubernetes 部署,深入解析其工作流程 👿 简介 &#x1f3e0…

[元带你学: eMMC协议详解 11] Data transfer mode 数据传输模式

依JEDEC eMMC 5.1及经验辛苦整理,付费内容,禁止转载。 所在专栏 《元带你学: eMMC协议详解》 全文2300 字, 主要介绍数据传输模式,本节数据传输模式图非常重要。数据传输模式图可以说是我查对过最频繁的图之一了。eMMC 限定了这么…

数据库基础——6.排序与分页

这篇文章来讲一下数据库的排序与分页 目录 1.排序数据 1.1排序规则 1.2 单列排序 1.3 多列排序 2.分页 2.1 背景 2.2 实现规则 2.3 拓展 1.排序数据 1.1排序规则 使用 ORDER BY 子句排序 ASC(ascend):升序 ; DESC&a…

怎么一键保存浏览器中打开的所有标签页?

2023年5月28日,周日晚上: 被这个问题困扰很久了,之前一直不知道怎么全部保存浏览器中打开的所有标签页,浪费了不少的时间,今天下午偶然发现了解决办法。 很简单,直接在浏览器里使用快捷键“CtrlShiftD” …

本周大新闻|传Meta与Magic Leap谈专利授权;PS VR2前6周出货60万台

本周XR大新闻,AR方面,苹果XR项目核心高管曝光;传Meta与Magic Leap洽谈专利授权合作;歌尔光学公布新一代AR显示模组;Lumus公布二代波导Z-Lens最新细节;JBD X-cube发布全彩Micro LED光机Hummingbird&#xff…

我用GPT写了一个关于GPT的文章,大家看看写的如何

声明:以下内容来自GPT-3.5大模型(图片除外) 目录 I. 引言 1.1 研究背景和意义 1.2 现有研究综述 II. ChatGPT技术介绍 2.1 ChatGPT技术原理 2.2 ChatGPT技术优势 III. ChatGPT技术在智能客服中的应用和挑战 3.1 ChatGPT技术在智能客…

【TOP生物信息】使用Seurat包自带的方法进行单细胞类型注释

扫码关注下方公粽号,回复推文合集,获取400页单细胞学习资源! 本文共计1318字,阅读大约需要4分钟,目录如下: 方法简介演示数据来源代码演示小结代码参考往期单细胞系统教程 单细胞自动注释细胞类型的软件和…

华为OD机试真题B卷 Java 实现【查字典】,附详细解题思路

一、题目描述 输入一个单词前缀和一个字典,输出包含该前缀的单词。 二、输入描述 单词前缀字典长度字典。 字典是一个有序单词数组。 输入输出都是小写。 三、输出描述 所有包含该前缀的单词,多个单词换行输出。 若没有则返回-1。 四、解题思路…

Java的包:提高代码可维护性和可扩展性的神器

🧑‍💻CSDN主页:夏志121的主页 📋专栏地址:Java基础进阶核心技术专栏 目录 🍔 一、包名 🧆 二、类的导入 🥘 三、静态导入 🥘 四、在包中增加类 🍱 五、…

腾讯云服务器地域有什么不同?地域怎么选?

腾讯云服务器地域有什么区别?怎么选择比较好?地域选择就近原则,距离地域越近网络延迟越低,速度越快。关于地域的选择还有很多因素,地域节点选择还要考虑到网络延迟速度方面、内网连接、是否需要备案、不同地域价格因素…

Docker环境下将已运行的容器打包成新的镜像并运行在另一个服务器上的Docker容器中

1、 查看当前运行的容器 1.1、使用root账户登录进入Linux系统中,键入docker ps命令。 2、打包容器为镜像包 2.1、正在运行的容器一行中CONTAINER ID一列下面的字符串就是容器id,复制想要打包的容器ID并执行docker commit 容器id 容器新名称 例如&…

Spring Boot集成Seata利用AT模式分布式事务示例 | Spring Cloud 53

一、前言 通过以下系列章节: docker-compose 实现Seata Server高可用部署 | Spring Cloud 51 Seata AT 模式理论学习、事务隔离及部分源码解析 | Spring Cloud 52 我们对Seata及其AT事务模式有了基础的了解,今天我们通过搭建Spring Boot集成Seata示例…

组合总和--纯垃圾内容别看,浪费时间

1题目 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以 无限制重复被选…

[电脑使用技巧]Windows 11安装安卓手机APP

如果你的电脑已经运行Windows 11,经常在电脑和手机来复制内容,那我们为什么不在Windows 上实现安卓APP的应用呢?其实操作真的非常简单,我们接下来给大家分享下如何实现在Windows 11的系统上安装的app。只要按照下面的步骤逐个完成你就可以开启…

ffmpeg编译成wasm

最近在看ffmpeg的源码 https://ffmpeg.xianwaizhiyin.net/ffplay/ https://crifan.github.io/media_process_ffmpeg/website/audio_process/ 做个可运行的例子 代码在找了一堆,可用的版本放在这 https://github.com/killinux/ffmpeg_wasm_demo 先把ffmpeg 编译成 …

50 Projects 50 Days - Scroll Animation 学习记录

项目地址 Scroll Animation 展示效果 Scroll Animation 实现思路 HTML结构比较简单,就是10个盒子元素。当鼠标滚动时,盒子分别从左右移动过来。 思路上最开始想到的是给每一个盒子标记一个序号,滚动屏幕后,计算已经划动屏幕的…