文章目录
二、命令列表
2.1 jvm相关命令
2.1.2 thread(查看当前JVM的线程堆栈信息)
使用场景
:
在 Arthas 中,thread
命令用于查看和分析 JVM 中的线程信息。这个命令提供了关于线程的详细视图,有助于诊断线程相关的问题。以下是thread
命令的主要使用场景:
- 性能问题分析:
- 长时间运行的线程:通过查看线程的状态和运行时间,你可以识别出可能导致性能瓶颈的长时间运行线程。
- 死锁检测:可以使用
thread
命令检查是否存在线程死锁的情况,并获得有关死锁的详细信息。
- 调试线程问题:
- 线程状态:查看线程的状态(如 RUNNABLE、WAITING、BLOCKED 等),帮助理解线程的当前行为和潜在问题。
- 线程堆栈跟踪:获取线程的堆栈跟踪,分析线程在执行时的调用链,以便识别代码中的问题。
- 资源使用监控:
- 线程数:监控 JVM 中的线程总数,确保线程数在合理范围内,防止因线程过多导致的资源耗尽。
- 线程分布:查看不同线程的数量和状态,评估线程池的使用情况和线程资源的分配。
参数说明:
参数名称 | 说明 | 示例 |
---|---|---|
数字 | 示[数字]线程的运行堆栈 | thread 3 |
[n:] | 指定最忙的前N个线程并打印堆栈 | threaad -n 3 |
[b] | 找出当前阻塞其他线程的线程 | thread -b |
[i ] | 指定cpu占比统计的采样间隔,单位为毫秒 | thread -i 1000 -n 3 |
无 | 当没有参数时,显示所有线程的信息 | thread |
–state | 查看处于线程状态 | thread --state WAITING |
举例1:展示[数字]线程的运行堆栈,命令:thread 线程ID
基础语法
:
thread 线程ID
你看到的输出确实是 Arthas 的 thread 命令的查询结果,实际上它展示了线程的运行堆栈信息,这些信息可以帮助你分析线程的状态和性能瓶颈。以下是你提供的输出的解释:
pool-31-thread-43
:这是线程的名称。Id=226
:这是线程的IDTIMED_WAITING
:线程在 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@da1bfc6 上等待某些条件。它通常用于调度任务或线程池中的任务等待执行。Affect(row-cnt:0) cost in 2 ms.
:表示查询本身的消耗时间为2毫秒,没有影响到数据库中的行计数。这部分通常表明命令执行的性能影响情况。
如果你看到的线程信息符合预期,但没有显示额外的异常或错误信息,那说明你成功地查询了线程的状态。
这些信息对于诊断和分析线程的行为很有帮助。如果你在分析过程中遇到其他问题,可以提供更多细节,以便更好地协助你。
举例2:找出当前阻塞其他线程的线程
基础语法
:
thread -b
[arthas@18139]$ thread -b
No most blocking thread found!
Affect(row-cnt:0) cost in 178 ms.
[arthas@18139]$
本人其他相关文章链接
1.Arthas 全攻略:让调试变得简单
2.Arthas dashboard(当前系统的实时数据面板)
3.Arthas thread(查看当前JVM的线程堆栈信息)
4.Arthas jvm(查看当前JVM的信息)
5.Arthas sysprop(查看和修改JVM的系统属性)
6.Arthas sysenv(查看JVM的环境变量)
7.Arthas vmoption(查看和修改 JVM里诊断相关的option)
8.Arthas getstatic(查看类的静态属性 )
9.Arthas heapdump(dump java heap, 类似 jmap 命令的 heap dump 功能)
10.Arthas logger(查看 logger 信息,更新 logger level)
11.Arthas mbean(查看 Mbean 的信息)
12.Arthas memory(查看 JVM 内存信息)
13.Arthas ognl(执行ognl表达式)
14.Arthas perfcounter(查看当前 JVM 的 Perf Counter 信息)
15.Arthas vmtool(从 jvm 里查询对象,执行 forceGc)
16.Arthas jad(字节码文件反编译成源代码 )
17.Arthas mc(Memory Compiler/内存编译器 )
18.Arthas redefine(加载外部的.class文件,redefine到JVM里 )
19.Arthas classloader (查看 classloader 的继承树,urls,类加载信息)
20.Arthas sc(查看JVM已加载的类信息 )
21.Arthas sm(查看已加载类的方法信息 )
22.Arthas monitor(方法执行监控)
23.Arthas stack (输出当前方法被调用的调用路径)
24.Arthas trace (方法内部调用路径,并输出方法路径上的每个节点上耗时)
25.Arthas tt(方法执行数据的时空隧道,记录下指定方法每次调用的入参和返回信息,并能对这些不同的时间下调用进行观测)
26.Arthas watch (方法执行数据观测)
27.Arthas profiler(使用async-profiler对应用采样,生成火焰图)