0
点赞
收藏
分享

微信扫一扫

arthas 安装使用快速入门


1. 安装 Arthas

方法一:通过脚本安装
  1. 打开终端(Linux/Mac)或命令提示符(Windows)。
  2. 下载并运行安装脚本:

curl -O https://arthas.aliyun.com/arthas-boot.jar

  1. 启动 Arthas:

java -jar arthas-boot.jar

方法二:手动下载
  1. 访问 Arthas 官方 GitHub 或 Arthas 官网。
  2. 下载最新版本的 arthas-boot.jar 文件。
  3. 使用以下命令启动:

java -jar arthas-boot.jar

2. 快速入门

步骤 1:选择目标 Java 进程
  • 启动 Arthas 后,它会列出当前机器上所有的 Java 进程。
  • 按照提示输入目标 Java 进程的编号(PID),例如:

Please select the target process: 1

步骤 2:常用命令

以下是一些常用的 Arthas 命令及其用途:

  1. 查看类加载信息

sc -d <class-name>

示例:

sc -d com.example.MyClass

  1. 查看方法调用

sm <class-name>

示例:

sm com.example.MyClass

  1. 监控方法执行

watch <class-name> <method-name> '{params, returnObj, throwExp}'

示例:

watch com.example.MyClass myMethod '{params, returnObj}'

  1. 查看线程状态

thread

查看某个线程的堆栈:

thread <thread-id>

  1. 动态修改日志级别

logger --name <logger-name> --level <level>

示例:

logger --name ROOT --level DEBUG

  1. 查看 JVM 信息

jvm

  1. 退出 Arthas

stop

3. 示例场景

场景 1:排查方法性能问题

假设我们怀疑 com.example.MyService#process 方法性能有问题:

  1. 使用 watch 命令监控方法入参、返回值和耗时:

watch com.example.MyService process '{params, returnObj, cost}' -x 3

  1. -x 3 表示统计方法调用的耗时。
场景 2:排查死锁问题
  1. 使用 thread 命令查看线程状态:

thread

  1. 如果发现死锁,使用以下命令定位死锁线程:

thread -b

场景 3:动态调整日志级别
  1. 动态将日志级别改为 DEBUG:

logger --name com.example.MyLogger --level DEBUG

4. 高级功能

热更新代码

Arthas 支持在不重启应用的情况下热更新代码:

  1. 使用 jad 反编译类:

jad com.example.MyClass

  1. 修改代码后,使用 redefine 加载新代码:

redefine /path/to/MyClass.class

火焰图分析

Arthas 提供了生成火焰图的功能,用于分析性能瓶颈:

profiler start

运行一段时间后停止并生成火焰图:

profiler stop

5. 注意事项

  1. 权限问题:确保运行 Arthas 的用户有权限访问目标 Java 进程。
  2. 生产环境:谨慎使用热更新功能,避免对生产环境造成影响。
  3. 版本兼容性:确保 Arthas 版本与目标 JDK 版本兼容。

6. 参考资料

  • 官方文档:Arthas 官网
  • GitHub 仓库:https://github.com/alibaba/arthas
举报

相关推荐

0 条评论