2.基础指令

简介: Arthas简介:通过`dashboard`查看线程信息,`jad`反编译类,`thread`分析线程堆栈与阻塞,`watch`监控方法参数及耗时,支持按状态、采样等条件过滤。`quit`退出连接,`stop`彻底关闭服务,便于Java进程诊断。

1.dashboard
输入dashboard,按回车/enter,会展示当前进程的信息,按ctrl+c可以中断执行

● ID: Java级别的线程ID,注意这个ID不能跟jstack中的nativeID一一对应
● NAME: 线程名
● GROUP: 线程组名
● PRIORITY: 线程优先级, 1~10之间的数字,越大表示优先级越高
● STATE: 线程的状态
● CPU%: 线程消耗的cpu占比,采样100ms,将所有线程在这100ms内的cpu使用量求和,再算出每个线程的cpu使用占比。
● TIME: 线程运行总时间,数据格式为分:秒
● INTERRUPTED: 线程当前的中断位状态
● DAEMON: 是否是daemon线程
2.jad反编译指令
输入:jad + 文件全路径,如我想查看主启动类,则:
jad com.arthas.ArthasApplication

3.thread
最忙的前N个线程并打印堆栈
thread -n 3

所有线程的信息
thread

指定线程的运行堆栈
thread id
如上有线程ID为37的,所以这里指明id=37

当前阻塞其他线程的线程
thread -b
无阻塞返回

有阻塞返回
"http-bio-8080-exec-4" Id=27 TIMED_WAITING
at java.lang.Thread.sleep(Native Method)
at test.arthas.TestThreadBlocking.doGet(TestThreadBlocking.java:22)

-  locked java.lang.Object@725be470 <---- but blocks 4 other threads!
at javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at test.filter.TestDurexFilter.doFilter(TestDurexFilter.java:46)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
at com.taobao.tomcat.valves.ContextLoadFilterValve$FilterChainAdapter.doFilter(ContextLoadFilterValve.java:191)
at com.taobao.eagleeye.EagleEyeFilter.doFilter(EagleEyeFilter.java:81)
at com.taobao.tomcat.valves.ContextLoadFilterValve.invoke(ContextLoadFilterValve.java:150)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:429)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1085)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
-  locked org.apache.tomcat.util.net.SocketWrapper@7127ee12
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)

Number of locked synchronizers = 1
- java.util.concurrent.ThreadPoolExecutor$Worker@31a6493e

注意, 目前只支持找出synchronized关键字阻塞住的线程, 如果是java.util.concurrent.Lock, 目前还不支持。
指定采样时间间隔
thread -n 3 -i 间隔时间(ms)

查看指定状态的线程
thread –state
thread –state 状态
状态:[RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, NEW, TERMINATED]

4.watch
查看方法耗时出参
watch 类全路径 方法名 returnObj
如我有这样一个方法:

则指令为:
watch com.arthas.controller.ArthasController arthasTest returnObj

查看指定方法入参出参
watch com.arthas.controller.ArthasController arthasTest "{params,returnObj}" -x 2

观察异常信息

5.退出Arthas
如果只是退出当前的连接,可以用quit或者exit命令。Attach到目标进程上的arthas还会继续运行,端口会保持开放,下次连接时可以直接连接上。
如果想完全退出arthas,可以执行stop命令。

相关文章
|
缓存 移动开发 关系型数据库
Linux 内存 占用较高问题排查
Linux 内存 占用较高问题排查
1203 2
|
2月前
|
人工智能 搜索推荐 API
OpenClaw进阶实战指南|阿里云/本地喂饭级部署步骤+插件开发与集成+大模型API配置教程
2026年,OpenClaw(Clawdbot)的核心竞争力已从基础自动化能力转向开放的插件生态——通过自定义插件,用户可突破原生功能局限,将OpenClaw与专属业务场景、私有工具、内部系统深度绑定,实现从“通用AI助手”到“行业专用工具”的升级。无论是对接企业内部数据库、开发个性化自动化流程,还是适配垂直领域的特殊需求,插件机制都为OpenClaw提供了无限扩展可能。
808 0
|
2月前
|
人工智能 网络协议 机器人
OpenClaw阿里云怎么安装的?轻量应用服务器OpenClaw镜像自动部署教程
阿里云轻量服务器推出OpenClaw官方镜像,支持一键自动部署,5分钟完成,成本低至9.9元/月。无需手动安装配置,预装环境+启动服务,适配AI爱好者、开发者及办公自动化用户。⚠️需选香港/新加坡地域方可使用联网搜索等核心功能。
448 1
|
4月前
|
数据采集 人工智能 自然语言处理
开源大模型微调对比:选对模型,让定制化更高效
本文对比Llama 3、Qwen2.5、Mistral三款开源大模型在中文场景下的微调表现,从算力门槛、数据效率、任务适配性等维度分析,结合实战案例与主观评估,为开发者提供选型建议,助力高效构建定制化AI模型。
|
5月前
|
Arthas Java 测试技术
1.下载安装
Arthas是一款Java诊断工具,需先启动Java应用并安装JDK。通过curl下载arthas-boot.jar,运行后选择目标进程即可接入。支持多Java进程管理,适用于SpringBoot等应用的线上问题排查与动态诊断。
|
5月前
|
存储 算法 BI
xxljob本地运行
本文介绍XXL-JOB分布式任务调度的部署与使用。包含源码获取、数据库导入、服务端配置启动、客户端注册及执行器配置。详细说明各数据表作用、路由策略类型,并演示任务创建、参数设置与执行日志查看,助你快速上手XXL-JOB。
|
5月前
|
Java 开发工具 数据安全/隐私保护
项目《中州养老》
《中州养老》是一个面向养老院的后台管理系统,涵盖员工管理端与家属小程序端。系统功能包括预约参观、入住退住、计费管理、健康监测等模块。项目采用Vue3+TS+TDesign构建前端,后端基于SpringBoot(SSM),集成Redis缓存、Nginx部署、阿里云OSS与IoT平台。支持RBAC权限控制、智能设备数据实时监控、微信登录、定时任务处理及多线程高效通信,实现养老业务全流程数字化管理。(238字)
|
5月前
|
缓存 开发工具 git
QLExpress使用及源码分析
QLExpress是阿里开源的轻量级规则引擎,支持通过注解与YAML配置实现业务逻辑解耦。通过@QLAlias、@QLRule等注解定义规则接口,结合AST语法树解析与上下文执行,实现动态脚本编译与缓存,适用于复杂条件判断与动态计算场景,具备高扩展性与易维护性。
|
5月前
|
数据可视化 Java 关系型数据库
01-认识Activiti
工作流指如请假、报销等需审批的业务流程,通过可视化引擎实现多节点审批,广泛应用于CRM、WMS等系统。主流技术包括BPMN、Activiti和Flowable,其中Activiti为Java系开源引擎,支持复杂流程自动化,推动企业流程数字化。
|
安全 算法 物联网
RFID人员定位管理
RFID人员管理基于射频识别技术,通过标签与读写器实现人员身份识别和定位跟踪。广泛应用于工厂、医院、校园、商场等场景,提升生产效率、安全保障及服务质量。系统由RFID标签、阅读器和后台管理系统组成,具备实时性强、精度高、非接触式等优势,可记录人员轨迹,助力管理决策。尽管存在成本与安全性挑战,但随着技术进步,RFID人员管理系统将在更多领域发挥重要作用。