输入dashboard,回车,仪表盘显示当前进程相关信息。按ctrl+c可以中断执行

  1. Thread相关信息
  2. 线程id 线程名称 线程组 线程优先级 线程状态 线程消耗的cpu百分比 运行总时间 线程当前的中断位状态 是否守护线程
  3. ID NAME GROUP PRIORITY STATE %CPU DELTA_TIME TIME INTERRUPTED DAEMON
  4. -1 C2 CompilerThread0 - -1 - 11.07 0.553 1:22.494 false true
  5. 104 sentinel-time-tick-thread main 5 TIMED_WAITING 2.2 0.110 3:31.983 false true
  6. -1 C1 CompilerThread1 - -1 - 0.62 0.031 0:17.117 false true
  7. 394 Timer-for-arthas-dashboard-46f3bc1a-04fb-4978-b72c-03 system 5 RUNNABLE 0.55 0.027 0:0.031 false true
  8. 103 sentinel-system-metric-record-task-thread-1 main 5 TIMED_WAITING 0.47 0.023 0:41.677 false true
  9. 379 arthas-NettyHttpTelnetBootstrap-3-2 system 5 RUNNABLE 0.29 0.014 0:0.194 false true
  10. 106 metrics-RollingFileAppender-thread-1 main 5 TIMED_WAITING 0.25 0.012 0:23.138 false true
  11. 115 SimplePauseDetectorThread_1 main 5 TIMED_WAITING 0.19 0.009 0:22.857 false true
  12. 116 SimplePauseDetectorThread_2 main 5 TIMED_WAITING 0.19 0.009 0:22.595 false true
  13. 114 SimplePauseDetectorThread_0 main 5 TIMED_WAITING 0.17 0.008 0:22.866 false true
  14. -1 VM Periodic Task Thread - -1 - 0.07 0.003 0:9.007 false true
  15. 107 metrics-bin-reporter-1-thread-1 main 5 TIMED_WAITING 0.07 0.003 0:20.529 false true
  16. 109 sentinel-cluster-token-batch-request-master-loop-task main 5 TIMED_WAITING 0.06 0.003 0:7.741 false true
  17. -1 VM Thread - -1 - 0.04 0.002 0:5.366 false true
  18. 110 sentinel-metric-aggregator-task-thread-1 main 5 TIMED_WAITING 0.01 0.000 0:1.348 false true
  19. 46 redisson-netty-4-1 main 5 RUNNABLE 0.0 0.000 0:0.830 false false
  20. ②内存信息 ③垃圾回收
  21. Memory used total max usage GC
  22. heap 211M 342M 844M 24.99% gc.ps_scavenge.count 35
  23. ps_eden_space 136M 225M 287M 47.64% gc.ps_scavenge.time(ms) 1570
  24. ps_survivor_space 15M 16M 16M 99.90% gc.ps_marksweep.count 4
  25. ps_old_gen 58M 100M 633M 9.18% gc.ps_marksweep.time(ms) 1705
  26. nonheap 142M 152M -1 93.58%
  27. code_cache 21M 27M 240M 9.01%
  28. metaspace 107M 110M -1 96.67%
  29. compressed_class_space 13M 14M 1024M 1.34%
  30. direct 368K 368K - 100.00%
  31. mapped 0K 0K - 0.00%
  32. ④运行信息
  33. Runtime
  34. os.name Linux
  35. os.version 3.10.0-229.el7.x86_64
  36. java.version 1.8.0_161
  37. java.home /usr/local/jdk1.8.0_161/jre
  38. systemload.average 0.01
  39. processors 2
  40. 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

截图展示
image.png
gc.ps_scavenge.count:垃圾回收次数
gc.ps_scavenge.time(ms):垃圾回收消耗时间
gc.ps_marksweep.count:标记-清除算法的次数
gc.ps_marksweep.time(ms):标记-清除算法的消耗时间