Alibaba Arthas学习与使用

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

在这里插入图片描述

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何在多个端口上运行 SSH 服务器?

SSH(Secure Shell)是一种用于安全远程访问和管理服务器的协议。默认情况下,SSH服务器在Linux系统上使用22号端口进行通信。但是,有时我们可能需要在多个端口上运行SSH服务器,以满足特定的需求或增强服务器的安全性。 本…

SQL审核工具Yearning搭建及使用

一、背景 实际的业务场景中,我们难免会直接对生产库的数据进行修改。很多朋友都是发sql给运维,然后运维执行。过程不可控,出错几率很大。 而且没有审核,不知道提交的具体是什么sql,极有可能是删库跑路的sql&#xff0…

实验二十一、积分运算电路的输出波形分析

一、题目 利用 Multisim 分析图1所示两个积分运算电路的输出波形,输入电压为 200 Hz、幅值为 1 V 的方波信号。 图 1 图1\,\, 图1 二、仿真电路 在 Multism 中搭建图1所示的两个电路,如图2所示。为了防止电路中的直流增益过大,故在电容上…

【Python FTP/SFTP】零基础也能轻松掌握的学习路线与参考资料

一、Python FTP/SFTP的学习路线 Python FTP/SFTP是Python语言的两种常用的文件传输协议。在学习Python网络编程过程中,学习FTP/SFTP是非常重要的一步。下面给出Python FTP/SFTP的学习路线: 了解FTP/SFTP协议 在开始学习Python FTP/SFTP之前&#xff0…

【六一】【海思SS528】GPIO寄存器操作 - 使能GPIO管脚输出高、低电平

目录 一、概述二、配置复用控制寄存器,使能GPIO功能三、配置GPIO_DIR寄存器,选择输出四、配置GPIO_DATA寄存器,输出高电平五、测试 一、概述 这篇文章根据海思SS528芯片提供的《22AP30 H.265编解码处理器用户指南.pdf》文档(文档路径&#xf…

TPO69 01|Why Snakes Have Forked Tongues P5P6|阅读真题精读|17:50~19:35

17:00~17:50 吃饭 目录 P56 生词 段落大意 P5段落大意 P6段落大意 题目 【5】事实信息题|定位准确非常重要✅ 【6】事实信息题|定位准确非常重要✅ 【7】推理题|文章是否提及|不要过度推理 【8】修辞目的题|举例一般为了说明✅ 【9】句子插入题|in other words|同义…

读数据压缩入门笔记01_数据压缩导读

1. 建立在数据压缩上的世界 1.1. 数据压缩技术最让人惊异之处在于,它与过去40年里个人计算的很多重大改变有关,但很少有人知道这一点 1.2. 我们当下生活在其中的这个计算世界,完全建立在数据压缩算法之上 1.3. 图像的压缩 1.3.1. 1978年 …

Matcher: Segment Anything with One Shot Using All-Purpose Feature Matching 论文精读

Matcher: Segment Anything with One Shot Using All-Purpose Feature Matching 论文链接:[2305.13310] Matcher: Segment Anything with One Shot Using All-Purpose Feature Matching (arxiv.org) 代码链接:aim-uofa/Matcher: Matcher: Segment Anyt…

图的邻接矩阵表示

设图有n个顶点,则邻接矩阵是一个n*n的方阵;若2个顶点之间有边,则方阵对应位置的值为1,否则为0; 看几个例子; 此图的邻接矩阵是 0 1 1 1 1 0 1 0 1 1 0 1 1 0…

计算机网络基础知识(七)—— 什么是HTTPS协议?你听我“瞎掰”

文章目录 01 | 工作原理02 | SSL/TLS协议2.1 | 握手协议2.2 | 更换密码协议(Change Cipher Spec Protocol)2.3 | 警告协议(Alert Protocol)2.4 | 应用数据协议(Application Data Protocol) 03 | 加密算法3.…

南大通用数据库-Gbase-8a-报错集锦-02-metadata is incomplete on localhost

一、版本信息 名称值CPUIntel(R) Core(TM) i5-1035G1 CPU 1.00GHz操作系统CentOS Linux release 7.9.2009 (Core)内存3G逻辑核数2Gbase8a版本8.6.2-R43 二、问题原因 由于gbase.table_distribution存储了所有引擎为express的表元数据信息,如果此表出现数据损坏&a…

【五】设计模式~~~创建型模式~~~单例模式(Java)

【学习难度:★☆☆☆☆,使用频率:★★★★☆】 5.1. 模式动机 对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务;一…

Hystrix 服务熔断

书籍,人,借阅服务之间相互调用, 高度耦合, 一旦一个服务故障, 其他服务会雪崩, 和多米诺骨牌一样 Hystrix 熔断器, 保险丝 服务降级 提供补救措施发给请求者, 服务可用, 能力下降了 borrow-service 导入依赖 <dependency><groupId>org.springframework.cloud&l…

【MySQL新手到通关】第六章 时间日期函数

文章目录 1.获取日期时间函数1.1 获取当前日期时间1.2 获取当前日期1.3 获取当前时间 2.日期格式化★★★2.1 日期转指定格式字符串2.2 字符串转日期 3.日期间隔3.1 增加日期间隔 ★★★3.2 减去一个时间间隔★★★3.3 日期相差天数&#xff08;天&#xff09;3.4 相差时间&…

使用Chat gpt提高Android开发效率

简介 在过去几周里&#xff0c;我进行了一项令人大开眼界的实验&#xff0c;将 Chat-GPT&#xff08;我使用的是 Bing Chat&#xff0c;它在后台使用了 GPT-4&#xff0c;并且可以免费使用&#xff09;融入到我的日常 Android 开发工作流程中&#xff0c;以探索它是否能够提高…

DAY04_JDBC快速入门JDBC API详解SQL防注入数据库连接池JDBC综合练习

目录 1 JDBC1.1 JDBC概念1.2 JDBC本质 1.3 JDBC好处 2 JDBC快速入门2.1 编写代码步骤2.2 具体操作 3 JDBC API详解3.1 DriverManager3.2 Connection3.2.1 获取执行对象3.2.2 事务管理 3.3 Statement3.4 ResultSet3.4.1 ResultSet案例 3.5 PreparedStatement3.5.1 SQL注入3.5.2 …

hutool文件导出

hutool文件导出 需求&#xff1a;管理员设置会议&#xff0c;参加会议会根据管理员设置的会议要求&#xff0c;用户参加会议填写相关数据&#xff0c;并且生成一个动态的excel数据并导出 示例&#xff1a; 每场都可以自定义报名字段 根据需求与前端约定 字段名称&#xff08;n…

Koa学习1:初始化项目

前言 作为前端开发者&#xff0c;最适合我们的后端就是node了&#xff0c;node的框架挺多的。选择Koa是因为国内用的挺多的、关于这方面的教程也很多、而且比较适合小项目。 学习教程是&#xff1a;【杰哥课堂】-项目实战-NodeKoa2从零搭建通用API服务 写这些文章&#xff0…

javascript基础九:说说Javascript中的继承?如何实现继承?

一、是什么 继承&#xff08;inheritance&#xff09;是面向对象软件技术当中的一个概念 如果一个类别B“继承自”另一个类别A&#xff0c;就把这个B称为“A的子类”&#xff0c;而把A称为“B的父类别”也可以称“A是B的超类” 继承的优点 继承可以使得子类具有父类别的各种属性…

Java 版 spring cloud 工程系统管理 工程项目管理系统源码 工程项目各模块及其功能点清单

工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#xff1a;实现对数据字典标签的增删改查操作 2、编码管理&#xff1a;实现对系统编码的增删改查操作 3、用户管理&#xff1a;管理和查看用户角色 4、菜单管理&#xff1a;实现对系统菜单的增删改查操…