Arthas 是阿里开源的Java诊断工具,能在不重启应用的情况下实现线上问题排查、性能监控和动态代码热更新。本文将详细介绍其核心功能与使用技巧。


一、快速安装与启动

# 下载最新版Arthas
curl -O https://arthas.aliyun.com/arthas-boot.jar # 启动并选择目标JVM进程
java -jar arthas-boot.jar

启动后会显示当前机器上的Java进程列表,输入序号即可附加到目标进程进行诊断。


二、性能瓶颈定位:trace命令

命令格式

trace [全限定类名] [方法名] '#cost>阈值' -n 监控次数

核心功能

追踪方法内部调用链,精确到每一行代码的耗时,快速定位性能瓶颈。

使用示例

# 监控saveMedicalDiag方法,仅显示耗时>10ms的调用,最多捕获5次
trace com.example.ClinicService saveMedicalDiag '#cost>10' -n 5

输出解读

`---ts=2025-07-30 12:00:00;thread_name=http-nio-8080-exec-1;id=1e;is_daemon=true;priority=5;
`---[15.78ms] com.example.ClinicService:saveMedicalDiag()
+---[0.5ms] com.example.DBUtil:getConnection()
+---[12.0ms] com.example.DAO:insert() # ️ 主要耗时点
`---[3.2ms] com.example.Logger:writeLog()

注意事项

  1. 默认忽略java.*包下的调用,需逐层排查或使用正则监控多层调用
  2. 正则监控示例:trace -E com.service.*|com.dao.* save*

https://arthas.aliyun.com/doc/trace.html


三、运行时数据观测:watch命令

命令格式

watch [类名] [方法名] '{观察表达式}' [参数]

核心功能

观察表达式 作用 示例
params 捕获方法入参 {params[0].userName}
target 获取当前对象属性 target.connectionPoolSize
returnObj 获取返回值 returnObj.status
throwExp 捕获异常信息 throwExp.getMessage()

常用参数

参数 作用
-b 方法调用前触发
-e 异常时触发
-s 方法返回后触发
-f 方法结束后触发
-x 3 设置对象遍历深度
-n 10 仅监控前10次调用
--exclude-class-pattern *Controller 排除特定类

实用场景示例

1. 监控异常时的入参

watch com.example.OrderService createOrder '{params, throwExp}' -e -x 3

输出:

ts=2025-07-30 14:30:00; [cost=45ms] result=ArrayList[
@Object[][ # 入参
@OrderRequest[userId="U123", productId=null], # ️ 空值导致异常
],
ctd.persistence.DAOException: 产品ID不能为空! # 异常信息
]

2. 监控返回值属性

watch com.example.UserService getUser '{returnObj.age, returnObj.name}' -s

3. 跟踪对象状态变化

watch com.example.CacheService refresh 'target.cacheSize' -f

https://arthas.aliyun.com/doc/watch.html


四、Arthas核心优势

  1. 无侵入诊断

    无需修改代码或重启服务,直接接入线上JVM进程

  2. 精准定位

    trace精确到代码行级耗时,watch实时捕获运行时数据

  3. 动态热更新

    支持在线修改字节码(https://arthas.aliyun.com/doc/redefine.html)

  4. 全链路支持

    集成火焰图、线程分析、内存监控等全方位工具


五、使用建议

  1. 生产环境慎用

    优先在测试环境验证命令,避免-f参数导致大量日志输出

  2. 组合使用命令

    先用trace定位瓶颈方法,再用watch分析具体参数

  3. 正则表达式优化

    使用-E参数批量监控多个类:watch -E 'com.service.*|com.dao.*' *

通过Arthas官方提供的https://arthas.aliyun.com/doc/web-console.html可图形化操作,提升诊断效率。

掌握Arthas的核心命令,能让Java应用的线上问题排查效率提升数倍,真正实现“无需重启的诊断艺术”。

Arthas使用指南:安装与常用命令(trace、watch)详解的更多相关文章

  1. Linux常用命令及部分详解

    1.总结部分 常用指令 ls      显示文件或目录 -l            列出文件详细信息l(list) -a            列出当前目录下所有文件及目录,包括隐藏的a(all) m ...

  2. Kubernetes 实践指南之Kubernetes 的命令行工具详解

    kubectl作为客户端CLI工具,可以让用户通过命令行的方式对Kubernetes集群进行管理.本节内容将对kubectl的子命令和用法进行详细描述. 一.kubectl 用法概述 kubectl语 ...

  3. linux常用命令之scp详解

    使用scp的前提: 1.服务端启动了sshd服务 2.是本地和远程两端的系统都必须要有scp这个命令.即openssh-clients软件包 [安装方法] [root@ ~]# yum install ...

  4. 实验 1 Linux 系统的安装和常用命令

    实验 1 Linux 系统的安装和常用命令 (题目) 一.实验目的 (1)掌握 Linux 虚拟机的安装方法.Spark 和 Hadoop 等大数据软件在 Linux 操作系统 上运行可以发挥最佳性能 ...

  5. ios开发环境配置及cordova安装与常用命令

    一.ios开发环境配置 1.首先要有台Mac Book,如果有Mac Book,跳过步骤2.3.4,如果没有,执行步骤2.3.4: 2.下载并安装VMware Workstation,最好是下最新版本 ...

  6. Git安装以及常用命令(图文详解)

    **Git安装以及常用命令** 1.下载安装Git,傻瓜式安装相信大家都会. 官网下载地址:[https://git-scm.com/downloads] 2.Git基本操作 (1)git --ver ...

  7. linux基础学习之软件安装以及常用命令

    linux基础学习之软件安装以及常用命令 调用中央仓库: yum install wget 然后下载nodejs: wget https://nodejs.org/dist/v10.14.2/node ...

  8. Git安装和常用命令

    Git是目前世界上最先进的分布式版本控制系统!!! Git能自动帮我们记录每次文件的改动,还可以让同事协作编辑. 接下来,简单的介绍下Git的安装和常用命令: Git安装: 1.Windows系统,进 ...

  9. RabbitMQ入门教程(一):安装和常用命令

    原文:RabbitMQ入门教程(一):安装和常用命令 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn ...

  10. 记录redis安装及常用命令

    Redis安装及常用命令 一.安装 1.下载,解压,进入redis解压目录,make. make PREFIX=目录/redis install :安装到指定目录文件名为redis. 2.将解压目录里 ...

随机推荐

  1. vault

    目录 Vault使用场景 数据加密 访问控制 有时间限制的访问 灾备恢复 基于身份(Identity)的安全性 人类和机器认证 静态和动态secrets的Secrets engines Install ...

  2. .NET 8 开发的跨平台多商户第三方支付SDK

    前言 快速发展的互联网应用开发中,支付功能已成为各类平台不可或缺的一环.为了帮助大家更高效地接入主流支付渠道,推荐一套基于 .NET 开发的第三方支付 SDK.该 SDK 支持跨平台运行,适用于多种操 ...

  3. 面试题-Thread.sleep(0)的作用是什么

      就是线程等待的意思.由于Java采用抢占式的线程调度算法,因此可能会出现某条线程常常获取到CPU控制权的情况,为了让某些优先级比较低的线程也能获取到CPU控制权,可以使用Thread.sleep( ...

  4. 启智树提高组day3T1 3479 : A:climb 树

    启智树提高组day3T1 3479 : A:climb 树 题目描述 DoubleDuck山是X省的著名旅游景点.这一天,淘淘慕名而来,打算爬到山顶处. DoubleDuck山的构造是十分特殊的.在这 ...

  5. 未来已来?vSphere 9 预览版部署体验

    最近看到不少技术爱好者开始分享 vSphere 9 的基础体验镜像,作为 VMware 的忠实粉丝,怎么能错过这波"尝鲜"机会呢? 趁着空闲时间,我也动手安装体验了一下.从初步使用 ...

  6. 一文搞懂K8s中的RBAC认证授权

    概述 官方文档: https://kubernetes.io/zh-cn/docs/reference/access-authn-authz/authorization/ https://kubern ...

  7. MySQL查询优化的步骤

    本文由 ChatMoney团队出品 MySQL查询优化是提高数据库性能的关键步骤之一.通过优化查询,可以减少数据库的负载,提高查询速度,从而提高整个应用程序的性能. 选择合适的索引 索引是数据库中用于 ...

  8. 推荐五大AI+MCP自动化测试工具!

    在当今快速发展的软件行业,自动化测试已成为提升开发效率和产品质量的关键.今天,我们将给大家推荐五大MCP自动化测试工具,助你在自动化测试领域更进一步. 1.MCP介绍 首先,你得知道,MCP是什么? ...

  9. Java源码分析系列笔记-1.JMM模型之先谈硬件

    目录 1. 冯诺依曼体系结构 2. 高速缓存 2.1. 工作原理 2.2. 存储器层次结构 2.3. 局部性原理 3. 缓存一致性/可见性问题 3.1. 如何解决 3.1.1. 总线加锁 3.1.2. ...

  10. DotTrace系列:9. 大结局之 跨平台 和 自定义行为 诊断

    一:背景 1. 讲故事 本篇是系列的最后一篇,我们从跨平台部署和自定义诊断的角度跟大家聊一聊 dottrace,希望对大家有所启发. 二:跨平台和自定义诊断 1. 如何跨平台诊断分析 如果 dottr ...