我举个常见场景,你有没有遇到有没有觉得难搞,熟练使用Arthas会让以下问题非常简单:
- 生产环境慢接口分析,不知道接口耗时的原因 (trace命令)
- 生成环境断点,查看某个方法入参返回值(watch命令)
- 觉得运维发版的代码和我本地代码不一样,需要反编译 (Decompile Class Jad 命令)
- 查看内存中,变量的值 (OGNl表达式)
- cpu高时,分析造成cpu高的代码 (thread命令)
- 拦截某个方法,并且以同样的入参进行重试调用 (TT命令)
- 调用代码中任意方法 (OGNl表达式)
arthas支持非常丰富的功能,以上只是我平时生成环境调优经常遇到几个场景,相信大家也经常遇到,下面对arthas进行详细介绍。
一. 主要功能概览
官方文档:https://arthas.aliyun.com/doc/install-detail.html
二. idea插件介绍
插件管理,搜索:arthas idea。该插件提供了arthas几乎所有命令快捷生成以及中文说明。
在类和方法上单机右键,选择Arthas Command。
三. 举例
- 安装
正常安装需要下载arthas-boot.jar然后启动,每次还要找到arthas-boot.jar所在目录。使用工具提供的命名行安装,会把as.sh写入环境变量,在任何地方都可以直接使用,更方便。
curl -sk https://arthas.aliyun.com/arthas-boot.jar -o ~/.arthas-boot.jar && echo "alias as.sh='java -jar ~/.arthas-boot.jar --repo-mirror aliyun --use-http 2>&1'" >> ~/.bashrc && source ~/.bashrc && echo "source ~/.bashrc" >> ~/.bash_profile && source ~/.bash_profile
2. 慢接口分析
在方法上单机右键,选择Trace会复制一下命令到剪切板
trace com.chainup.debt.utils.HttpUtils postWithHeaders -v -n 5 --skipJDKMethod false
-v 是过滤掉没匹配到的空请求
-n 是抓取5次
从官网找了一个结果显示,可以看到每个方法调用的次数、执行时间和代码行数。
其他命令就不逐一演示了,使用起来比较简单,实战很重要,需要大家挨个体验,最上面对应的问题已经给出了建议使用的命令。又不懂的欢迎评论区留言