输入dashboard,回车,仪表盘显示当前进程相关信息。按ctrl+c可以中断执行
①Thread相关信息
线程id 线程名称 线程组 线程优先级 线程状态 线程消耗的cpu百分比 运行总时间 线程当前的中断位状态 是否守护线程
ID NAME GROUP PRIORITY STATE %CPU DELTA_TIME TIME INTERRUPTED DAEMON
-1 C2 CompilerThread0 - -1 - 11.07 0.553 1:22.494 false true
104 sentinel-time-tick-thread main 5 TIMED_WAITING 2.2 0.110 3:31.983 false true
-1 C1 CompilerThread1 - -1 - 0.62 0.031 0:17.117 false true
394 Timer-for-arthas-dashboard-46f3bc1a-04fb-4978-b72c-03 system 5 RUNNABLE 0.55 0.027 0:0.031 false true
103 sentinel-system-metric-record-task-thread-1 main 5 TIMED_WAITING 0.47 0.023 0:41.677 false true
379 arthas-NettyHttpTelnetBootstrap-3-2 system 5 RUNNABLE 0.29 0.014 0:0.194 false true
106 metrics-RollingFileAppender-thread-1 main 5 TIMED_WAITING 0.25 0.012 0:23.138 false true
115 SimplePauseDetectorThread_1 main 5 TIMED_WAITING 0.19 0.009 0:22.857 false true
116 SimplePauseDetectorThread_2 main 5 TIMED_WAITING 0.19 0.009 0:22.595 false true
114 SimplePauseDetectorThread_0 main 5 TIMED_WAITING 0.17 0.008 0:22.866 false true
-1 VM Periodic Task Thread - -1 - 0.07 0.003 0:9.007 false true
107 metrics-bin-reporter-1-thread-1 main 5 TIMED_WAITING 0.07 0.003 0:20.529 false true
109 sentinel-cluster-token-batch-request-master-loop-task main 5 TIMED_WAITING 0.06 0.003 0:7.741 false true
-1 VM Thread - -1 - 0.04 0.002 0:5.366 false true
110 sentinel-metric-aggregator-task-thread-1 main 5 TIMED_WAITING 0.01 0.000 0:1.348 false true
46 redisson-netty-4-1 main 5 RUNNABLE 0.0 0.000 0:0.830 false false
②内存信息 ③垃圾回收
Memory used total max usage GC
heap 211M 342M 844M 24.99% gc.ps_scavenge.count 35
ps_eden_space 136M 225M 287M 47.64% gc.ps_scavenge.time(ms) 1570
ps_survivor_space 15M 16M 16M 99.90% gc.ps_marksweep.count 4
ps_old_gen 58M 100M 633M 9.18% gc.ps_marksweep.time(ms) 1705
nonheap 142M 152M -1 93.58%
code_cache 21M 27M 240M 9.01%
metaspace 107M 110M -1 96.67%
compressed_class_space 13M 14M 1024M 1.34%
direct 368K 368K - 100.00%
mapped 0K 0K - 0.00%
④运行信息
Runtime
os.name Linux
os.version 3.10.0-229.el7.x86_64
java.version 1.8.0_161
java.home /usr/local/jdk1.8.0_161/jre
systemload.average 0.01
processors 2
timestamp/uptime Thu May 06 14:37:29 CST 2021/10496s
面板说明
- ID: Java级别的线程ID,注意这个ID不能跟jstack中的nativeID一一对应。
- NAME: 线程名
- GROUP: 线程组名
- PRIORITY: 线程优先级, 1~10之间的数字,越大表示优先级越高
- STATE: 线程的状态
- CPU%: 线程的cpu使用率。比如采样间隔1000ms,某个线程的增量cpu时间为100ms,则cpu使用率=100/1000=10%
- DELTA_TIME: 上次采样之后线程运行增量CPU时间,数据格式为秒
- TIME: 线程运行总CPU时间,数据格式为分:秒
- INTERRUPTED: 线程当前的中断位状态
- DAEMON: 是否是daemon线程
JVM内部线程
Java 8之后支持获取JVM内部线程CPU时间,这些线程只有名称和CPU时间,没有ID及状态等信息(显示ID为-1)。 通过内部线程可以观测到JVM活动,如GC、JIT编译等占用CPU情况,方便了解JVM整体运行状况。
- 当JVM 堆(heap)/元数据(metaspace)空间不足或OOM时,可以看到GC线程的CPU占用率明显高于其他的线程。
- 当执行trace/watch/tt/redefine等命令后,可以看到JIT线程活动变得更频繁。因为JVM热更新class字节码时清除了此class相关的JIT编译结果,需要重新编译。
JVM内部线程包括下面几种:
- JIT编译线程: 如C1CompilerThread0,C2CompilerThread0
- GC线程: 如GCThread0,G1YoungRemSetSampling
- 其它内部线程: 如VMPeriodicTaskThread,VMThread,ServiceThread
截图展示
gc.ps_scavenge.count:垃圾回收次数
gc.ps_scavenge.time(ms):垃圾回收消耗时间
gc.ps_marksweep.count:标记-清除算法的次数
gc.ps_marksweep.time(ms):标记-清除算法的消耗时间