爱上Java诊断利器之Arthas
1. Arthas是什么?
摘自Arthas的Github介绍:
Arthas is a Java Diagnostic tool open sourced by Alibaba.
Arthas allows developers to troubleshoot production issues for Java applications without modifying code or restarting servers.
大意为:Arthas是阿里开源的一个Java诊断工具,可以帮助开发人员在不修改代码或重启服务器的情况下快速定位线上问题。
听起来确实是我们的程序员的一大福利。比如,我们就遇到一种情况,Spring Boot应用中有个cron定时任务为每天凌晨1点启动执行,但是测试起来很不方便,总不能每次修改cron时间来让QC测试吧?这样虽然是方便了测试妹子,但是却徒增了我们开发时间和迭代次数啊!!!那Arthas到底是否能够满足我们需求呢?Go on...
2. 开启Arthas之旅
2.1 安装Arthas
- 方式1:下载arthas-boot.jar包的方式
wget https://alibaba.github.io/arthas/arthas-boot.jar
此时在你当前所在目录下会有个arthas-boot.jar
包。
尝试下arthas:
# 启动arthas,会进入命令行交互状态
java -jar arthas-boot.jar
# 查看arthas命令手册
java -jar arthas-boot.jar -h
- 方式2:通过as.sh安装Arthas(强烈推荐)
# 该命令会下载 as.sh 到当前目录下
curl -L https://alibaba.github.io/arthas/install.sh | sh
尝试下arthas:
# 启动arthas,会进入命令行交互状态
./as.sh
# 查看arthas命令手册
./as.sh -h
2.2 开始使用
下面演示我们以as.sh
为主。
首先我们启动arthas,会查看到我们当前server上部署的应用已经被探测到,当前我的server上只有一个应用程序,只需输入数字1,即可和该应用进行交互:
2.2.1 基础命令
- 通过
dashboard
命令可以实时查看应用监控数据
- 通过
thread
命令查看应用程序中所有线程情况
其中第一列为线程的ID。
- 通过
thread threadId
命令查看指定线程状态信息- 比如我们要查看线程ID为506的线程状态信息:
- 当然,因为是命令行交互,也是支持管道流式操作:
通过
watch
命令去查看方法的参数、返回值和异常信息- 通过
sc
命令查看类的信息- 通过
sc yourFullClassName
- 通过
sc -d yourFullClassName*
去查看JVM加载的类信息
- 通过
sc *yourClassName*
去查看JVM加载的类信息
- 通过
- 通过
sm
命令查看类的方法信息- case 1:
sm java.math.RoundingMode
- case 2:
sm -d java.math.RoundingMode
- case 3:
sm java.math.RoundingMode <init>
- case 1:
2.2.2 重头戏命令
通过
jad yourFullClassName
去查看反编译后的完整代码信息通过
jad --source-only yourFullClassName > /tmp/yourClassName.java
导出反编译代码到临时目录通过
vim /tmp/yourClassName.java
进行编辑修改代码通过
sc -d *yourClassName | grep classLoaderHash
获取加载yourClassName的类加载器通过
mc -c classLoaderHash /tmp/yourClassName.java -d /tmp
重新用相同类加载器重新编译修改后的类(mc: Memory Compiler)通过
redefine /tmp/yourFullClassName.class
重新加载新的被编译的类文件
2.2.3 更多操作案例
参考资料
爱上Java诊断利器之Arthas的更多相关文章
- 带你上手阿里开源的 Java 诊断利器:Arthas
本文适合有 Java 基础知识的人群. 本文作者:HelloGitHub-秦人 HelloGitHub 推出的<讲解开源项目>系列,今天给大家带来一款阿里开源的 Java 诊断利器 Art ...
- Java诊断神器:Arthas常用功能
最新原文:https://www.cnblogs.com/uncleyong/p/14944401.html Arthas是Alibaba开源的Java诊断工具,功能很强大,它是通过Agent方式来连 ...
- Java 诊断工具 Arthas 教程学习笔记
Java 诊断利器 Arthas,是阿里的一款开源工具.Github-alibaba/arthas 上可以看到它的介绍.了解它,主要是最近对分析 Java 错误堆栈比较感兴趣,机缘巧合看到了它. 本文 ...
- java 诊断工具——Arthas
该说不说!小编做的这些功能,最讨厌的就是优化!某些前辈大佬写的代码小辈我实在不敢恭维!那逻辑!那sql! 接下来!今天的主角就登场了,阿里巴巴最近开源出来的一个针对 java 的工具,主要是针对 ja ...
- Alibaba Java诊断工具Arthas之快速安装和简单使用
Alibaba Java诊断工具Arthas简单介绍 : 当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决: 1.这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception ...
- Arthas Alibaba 开源 Java 诊断工具
Arthas 用户文档 English Docs Arthas(阿尔萨斯) 能为你做什么? Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱. 当你遇到以下类似问题而束手无策时,A ...
- Java诊断工具Arthas
Java诊断工具Arthas 1. Arthas简介 Arthas是阿里开源的一个线上java诊断工具,发现阿里还是挺喜欢开源一些技术的,造福人类.昨天试用了一下,发现真是强大,解决了我工作两年的很多 ...
- Java诊断利器Arthas
1 简介 Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱 当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决: 这个类从哪个 jar 包加载的?为什么会报各种类相关的 ...
- Java诊断利器Arthas优雅排查生产环境
前言 Arthas 是Alibaba开源的Java诊断工具.在线排查问题,无需重启:动态跟踪Java代码:实时监控JVM状态.对分秒必争的线上异常,Arthas可帮助我们快速诊断相关问题. 下载安装 ...
随机推荐
- P1080 国王游戏 (等待高精度AC)
P1080 国王游戏 题解 贪心策略:按照大臣左右手数字乘积从小到大排序 假设我们已经把大臣排了一个顺序 假定在这个顺序下我们可以保证 得到奖赏最多的大臣所得奖赏最少 那么我们一旦交换任意两个大臣, ...
- Mac OS为UltraEdit在Terminal中添加快捷使用命令
一,什么是UltraEdit 我觉得是个程序员,撸代码的都知道UrlEdit是什么.我们在会使用Linux,在Linux中有个很出名的编辑器gedit,使得我们在终端中输入gedit xxx.便可进入 ...
- 解决docker命令行终端显示不全的问题
访问docker容器,vim编辑文件时总是无法展示文件内容 解决 sudo docker exec -it -e LINES=$(tput lines) -e COLUMNS=$(tput cols) ...
- 【JVM学习笔记】系统类加载器
可以通过“java.system.class.loader"属性指定系统类加载器 默认情况下,该属性值为空: public class Test { public static void m ...
- .NET中的简单的并行
https://www.cnblogs.com/hdwgxz/p/6129419.html https://www.cnblogs.com/hueychan/p/10575907.html
- vue中自定义指令的使用
原文地址 vue中除了内置的指令(v-show,v-model)还允许我们自定义指令 想要创建自定义指令,就要注册指令(以输入框获取焦点为例) 一.注册全局指令: // 注册一个全局自定义指令 `v- ...
- 多版本YUM仓库搭建
服务器:CentOS7 YUM源:阿里云 空间要求:CentOS6+CentOS7 50G,考虑后期更新预留,LVS空间100G 1.在服务器配置CentOS7的yum源和CentOS6的yum源 ...
- IDEA 2019.2破解激活教程(激活到2089年8月,亲测有效,持续更新中...)
本来笔者这边是有个正版激活码可以使用的,但是,2019.9月3号的时候,一些小伙伴反映这个注册码已经失效了,于是拿着自己的 IDEA, 赶快测试了一下,果不其然,已然是不能用了. 好在,笔者又找到了新 ...
- 论文阅读及复现 | Effective Neural Solution for Multi-Criteria Word Segmentation
主要思想 这篇文章主要是利用多个标准进行中文分词,和之前复旦的那篇文章比,它的方法更简洁,不需要复杂的结构,但比之前的方法更有效. 方法 堆叠的LSTM,最上层是CRF. 最底层是字符集的Bi-LST ...
- golang break label 与goto label
本文链接:https://blog.csdn.net/itbsl/article/details/73380537 与其他语言一样,Go语言也支持label(标签)语法:分别是break label和 ...