Arthas使用指南:安装与常用命令(trace、watch)详解
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()
注意事项:
- 默认忽略
java.*包下的调用,需逐层排查或使用正则监控多层调用 - 正则监控示例:
trace -E com.service.*|com.dao.* save*
三、运行时数据观测: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
四、Arthas核心优势
无侵入诊断
无需修改代码或重启服务,直接接入线上JVM进程精准定位
trace精确到代码行级耗时,watch实时捕获运行时数据动态热更新
支持在线修改字节码(https://arthas.aliyun.com/doc/redefine.html)全链路支持
集成火焰图、线程分析、内存监控等全方位工具
五、使用建议
生产环境慎用
优先在测试环境验证命令,避免-f参数导致大量日志输出组合使用命令
先用trace定位瓶颈方法,再用watch分析具体参数正则表达式优化
使用-E参数批量监控多个类:watch -E 'com.service.*|com.dao.*' *
通过Arthas官方提供的https://arthas.aliyun.com/doc/web-console.html可图形化操作,提升诊断效率。
掌握Arthas的核心命令,能让Java应用的线上问题排查效率提升数倍,真正实现“无需重启的诊断艺术”。
Arthas使用指南:安装与常用命令(trace、watch)详解的更多相关文章
- Linux常用命令及部分详解
1.总结部分 常用指令 ls 显示文件或目录 -l 列出文件详细信息l(list) -a 列出当前目录下所有文件及目录,包括隐藏的a(all) m ...
- Kubernetes 实践指南之Kubernetes 的命令行工具详解
kubectl作为客户端CLI工具,可以让用户通过命令行的方式对Kubernetes集群进行管理.本节内容将对kubectl的子命令和用法进行详细描述. 一.kubectl 用法概述 kubectl语 ...
- linux常用命令之scp详解
使用scp的前提: 1.服务端启动了sshd服务 2.是本地和远程两端的系统都必须要有scp这个命令.即openssh-clients软件包 [安装方法] [root@ ~]# yum install ...
- 实验 1 Linux 系统的安装和常用命令
实验 1 Linux 系统的安装和常用命令 (题目) 一.实验目的 (1)掌握 Linux 虚拟机的安装方法.Spark 和 Hadoop 等大数据软件在 Linux 操作系统 上运行可以发挥最佳性能 ...
- ios开发环境配置及cordova安装与常用命令
一.ios开发环境配置 1.首先要有台Mac Book,如果有Mac Book,跳过步骤2.3.4,如果没有,执行步骤2.3.4: 2.下载并安装VMware Workstation,最好是下最新版本 ...
- Git安装以及常用命令(图文详解)
**Git安装以及常用命令** 1.下载安装Git,傻瓜式安装相信大家都会. 官网下载地址:[https://git-scm.com/downloads] 2.Git基本操作 (1)git --ver ...
- linux基础学习之软件安装以及常用命令
linux基础学习之软件安装以及常用命令 调用中央仓库: yum install wget 然后下载nodejs: wget https://nodejs.org/dist/v10.14.2/node ...
- Git安装和常用命令
Git是目前世界上最先进的分布式版本控制系统!!! Git能自动帮我们记录每次文件的改动,还可以让同事协作编辑. 接下来,简单的介绍下Git的安装和常用命令: Git安装: 1.Windows系统,进 ...
- RabbitMQ入门教程(一):安装和常用命令
原文:RabbitMQ入门教程(一):安装和常用命令 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn ...
- 记录redis安装及常用命令
Redis安装及常用命令 一.安装 1.下载,解压,进入redis解压目录,make. make PREFIX=目录/redis install :安装到指定目录文件名为redis. 2.将解压目录里 ...
随机推荐
- vault
目录 Vault使用场景 数据加密 访问控制 有时间限制的访问 灾备恢复 基于身份(Identity)的安全性 人类和机器认证 静态和动态secrets的Secrets engines Install ...
- .NET 8 开发的跨平台多商户第三方支付SDK
前言 快速发展的互联网应用开发中,支付功能已成为各类平台不可或缺的一环.为了帮助大家更高效地接入主流支付渠道,推荐一套基于 .NET 开发的第三方支付 SDK.该 SDK 支持跨平台运行,适用于多种操 ...
- 面试题-Thread.sleep(0)的作用是什么
就是线程等待的意思.由于Java采用抢占式的线程调度算法,因此可能会出现某条线程常常获取到CPU控制权的情况,为了让某些优先级比较低的线程也能获取到CPU控制权,可以使用Thread.sleep( ...
- 启智树提高组day3T1 3479 : A:climb 树
启智树提高组day3T1 3479 : A:climb 树 题目描述 DoubleDuck山是X省的著名旅游景点.这一天,淘淘慕名而来,打算爬到山顶处. DoubleDuck山的构造是十分特殊的.在这 ...
- 未来已来?vSphere 9 预览版部署体验
最近看到不少技术爱好者开始分享 vSphere 9 的基础体验镜像,作为 VMware 的忠实粉丝,怎么能错过这波"尝鲜"机会呢? 趁着空闲时间,我也动手安装体验了一下.从初步使用 ...
- 一文搞懂K8s中的RBAC认证授权
概述 官方文档: https://kubernetes.io/zh-cn/docs/reference/access-authn-authz/authorization/ https://kubern ...
- MySQL查询优化的步骤
本文由 ChatMoney团队出品 MySQL查询优化是提高数据库性能的关键步骤之一.通过优化查询,可以减少数据库的负载,提高查询速度,从而提高整个应用程序的性能. 选择合适的索引 索引是数据库中用于 ...
- 推荐五大AI+MCP自动化测试工具!
在当今快速发展的软件行业,自动化测试已成为提升开发效率和产品质量的关键.今天,我们将给大家推荐五大MCP自动化测试工具,助你在自动化测试领域更进一步. 1.MCP介绍 首先,你得知道,MCP是什么? ...
- Java源码分析系列笔记-1.JMM模型之先谈硬件
目录 1. 冯诺依曼体系结构 2. 高速缓存 2.1. 工作原理 2.2. 存储器层次结构 2.3. 局部性原理 3. 缓存一致性/可见性问题 3.1. 如何解决 3.1.1. 总线加锁 3.1.2. ...
- DotTrace系列:9. 大结局之 跨平台 和 自定义行为 诊断
一:背景 1. 讲故事 本篇是系列的最后一篇,我们从跨平台部署和自定义诊断的角度跟大家聊一聊 dottrace,希望对大家有所启发. 二:跨平台和自定义诊断 1. 如何跨平台诊断分析 如果 dottr ...