前言:
现时你们对“阿里arthas官网”大概比较关怀,看官们都需要分析一些“阿里arthas官网”的相关内容。那么小编也在网摘上汇集了一些对于“阿里arthas官网””的相关内容,希望大家能喜欢,看官们快快来了解一下吧!在没有Arthas之前,我一直用各种工具加Btrace来分析线上问题,但Btrace由于JDK版本问题,现在都很少用了,前段时间给团队推荐了阿里的Arthas,感觉真的是好用,这儿推荐给大家试试。
官网:
Demo:
注解源码:
教程:;id=arthas-basics
1、快速安装
下载arthas-boot.jar,然后用java -jar的方式启动
2、Linux/Unix/Mac 一键安装
一键安装:curl -L | sh
执行./as.sh,就会进入交互界面
3、快速入门
Arthas目前支持Web Console,用户在attach成功之后,可以直接访问:
可以填入IP,远程连接其它机器上的arthas。
4、查看help
5、jvm相关 —— dashboard (总览)
6、jvm相关 —— thread (显示线程信息)
7、jvm相关 —— jvm (显示目标JVM信息)
8、jvm相关 —— sysprop (显示并更改系统属性)
9、jvm相关 —— sysenv (显示系统环境)
10、class/classloader相关—— sc(搜索JVM加载的所有类)
11、class/classloader相关 —— jad (反编译类)
12、classloader相关 —— classloader (显示类加载器信息)
13、monitor (监视方法执行统计)
14、watch (显示指定方法调用的输入/输出参数)
15、trace (跟踪指定方法调用的执行时间)
16、stack (显示指定类和方法的堆栈跟踪)
17、Arthas 排查案例
下载demo-arthas-spring-boot.jar,再用java -jar命令启动
案例1:排查函数调用异常
watch com.example.demo.arthas.user.UserController * '{params, throwExp}' -x 2
当异常时捕获:watch com.example.demo.arthas.user.UserController * "{params[0],throwExp}" –e
按照耗时进行过滤:watch com.example.demo.arthas.user.UserController * '{params, returnObj}' '#cost>200'
案例2:热更新代码(通过 jad/sc/mc/redefine 命令实现动态更新代码的功能)
1.反编译:jad --source-only com.example.demo.arthas.user.UserController > D:\\UserController.java
jad --source-only com.example.demo.arthas.user.UserController > /data/expense-api/arthas/UserController.java
2.编辑UserController.java:return new User(id, "name" + id);
3.sc查找加载UserController的ClassLoader:sc -d *UserController | grep classLoaderHash
4.mc(Memory Compiler)命令来编译,并且通过 -c 参数指定ClassLoader,这一步生成 .class 字节码文件
mc -c 18b4aac2 D:\\UserController.java -d D:\\
mc -c 1be6f5c3 /data/expense-api/arthas/UserController.java -d /data/expense-api/arthas
5.使用redefine命令重新加载新编译好的 UserController.class
redefine D:\\com\\example\\demo\\arthas\\user\\UserController.class
redefine /data/expense-api/arthas/com/example/demo/arthas/user/UserController.class
案例3:排查HTTP请求返回404
访问:,我们想看一下到底是哪个Servlet处理了这个请求,返回了404?
跟踪所有的Servlet函数:trace javax.servlet.Servlet * > D:\\servlet.txt
案例4:动态更新应用 Logger Level
1.查找UserController 的 ClassLoader :sc -d com.example.demo.arthas.user.UserController | grep classLoaderHash
2.用ognl获取logger : ognl -c 1be6f5c3 '@com.example.demo.arthas.user.UserController@logger’
3.单独设置 UserController 的 logger level :
ognl -c 1be6f5c3 '@com.example.demo.arthas.user.UserController@logger.setLevel(@ch.qos.logback.classic.Level@DEBUG)’
4.修改logback的全局logger level,通过获取root logger,可以修改全局的logger level
ognl -c 1be6f5c3 '@org.slf4j.LoggerFactory@getLogger("root").setLevel(@ch.qos.logback.classic.Level@DEBUG)'
阿里这个工具在线上问题上,真的是很牛逼。
(线上问题系列一)百万并发的Kafka也有性能问题?
(线上问题系列二)JVM GC 自适应调节策略引起的问题
(线上问题系列三)记录一次线上Redis性能优化
(线上问题系列四)网络故障或换磁盘引起kafka客户端消费问题
(线上问题系列五)Kafka BUG引起的Tomcat线程池性能问题
(线上问题系列六)从一张Java报错图片说知识
Java问题性能优化分析工具介绍(一) XXFOX
Java web 优化基本方法(PPT)
标签: #阿里arthas官网