Arthas性能排查
一、背景
Arthas是阿里开源的一款Java应用监控诊断工具。能做的事很多:查看JVM中类加载信息、方法执行耗时、入参和出参、反编译字节码甚至能动态修改字节码改变代码执行逻辑。
本文简单介绍Java应用性能调优过程中如何使用Arthas查看方法内部的执行耗时分布。
二、最简使用方法
- 需要调优的Java应用所在服务器安装Arthas。注意需要使用Java应用相同的用户ID。安装地址Arthas下载地址
- 解压后启动
java -jar arthas-boot.jar - 选择Java进程。题外话,Arthas是通过Java Agent技术注入字节码来实现的。
- 使用Arthas的trace命令来监控Java方法耗时分布。
1 | # 一次注入一个方法。n限制统计方法调用的次数,超过次数则退出 |
- 通过网站页面或者curl、Postman等触发方法调用,就可以看到方法内部调用的耗时分布了。一般超过n定义的次数后也会直接退出。

三、后记
局限性:
- 不能通过jps感知的Java进程不能注入和监控。这要求Java进程的用户ID和Arthas进程的用户ID必须一致
- 方法调用过程中AOP逻辑不能展示,但是耗时会在外围方法调用中体现。比如Mybatis Interceptor中存在耗时的逻辑不会体现在方法调用栈中,但是Mybatis方法调用整体耗时长会体现。这会增加性能问题定位的难度
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 石头记!