目录

  • 1 arthas简介
  • 2 arthas下载
  • 3 arthas的使用
    • 3.1 arthas启动
    • 3.2 常用命令
      • 3.2.1 dashboard
      • 3.2.2 thread
      • 3.2.3 jad
      • 3.2.4 watch
      • 3.2.5 getstatic
      • 3.2.6 heapdump
        • 3.2.6.1 dump到指定的文件
        • 3.2.6.2 dump live 对象
        • 3.2.6.3 dump 到临时文件
      • 3.2.7 jvm
      • 3.2.8 logger
      • 3.2.9 mbean
        • 3.2.9.1 列出所有 Mbean 的名称
        • 3.2.9.2 查看 Mbean 的元信息
        • 3.2.9.3 查看 mbean 属性信息
        • 3.2.9.4 mbean 的 name 支持通配符匹配
        • 3.2.9.5 通配符匹配特定的属性字段:
        • 3.2.9.6 使用-E命令切换为正则匹配:
        • 3.2.9.7 使用-i命令实时监控
      • 3.2.10 memory
      • 3.2.11 ognl
        • 3.2.11.1 通过 hashcode 指定 ClassLoader
        • 3.2.11.2 执行多行表达式
      • 3.2.12 perfcounter
      • 3.2.13 sysenv
      • 3.2.14 vmoption
      • 3.2.15 vmtool
      • 3.2.16 classloader
      • 3.2.17 dump
      • 3.2.18 mc
      • 3.2.19 redefine
      • 3.2.20 retransform
      • 3.2.21 sc
      • 3.2.22 sm
      • 3.2.23 monitor
      • 3.2.24 stack
      • 3.2.25 trace
      • 3.2.26 tt
      • 3.2.27 auth
      • 3.2.28 options
      • 3.2.29 base64
      • 3.2.30 cat
      • 3.2.31 cls
      • 3.2.32 echo
      • 3.2.33 grep
      • 3.2.34 help
      • 3.2.35 history
        • 3.2.35.1 查看最近执行的3条指令
        • 3.2.35.2 清空指令
      • 3.2.36 keymap
      • 3.2.37 pwd
      • 3.2.38 tee
      • 3.2.39 profile
      • 3.2.40 session
      • 3.2.41 version
      • 3.2.42 quit
      • 3.2.43 reset
        • 3.2.43.1 还原指定类
        • 3.2.43.2 还原所有类
      • 3.2.44 stop

1 arthas简介

Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。

参考地址:

https://arthas.aliyun.com/

2 arthas下载

curl -O https://arthas.aliyun.com/arthas-boot.jar

3 arthas的使用

3.1 arthas启动

$ $ java -jar arthas-boot.jar
* [1]: 71560 math-game.jar[2]: 35542

进程是第 1 个,则输入 1,再输入回车/enter。Arthas 会 attach 到目标进程上,并输出日志:

[INFO] Try to attach process 71560
[INFO] Attach process 71560 success.
[INFO] arthas-client connect 127.0.0.1 3658,---.  ,------. ,--------.,--.  ,--.  ,---.   ,---./  O  \ |  .--. ''--.  .--'|  '--'  | /  O  \ '   .-'
|  .-.  ||  '--'.'   |  |   |  .--.  ||  .-.  |`.  `-.
|  | |  ||  |\  \    |  |   |  |  |  ||  | |  |.-'    |
`--' `--'`--' '--'   `--'   `--'  `--'`--' `--'`-----'wiki: https://arthas.aliyun.com/doc
version: 3.0.5.20181127201536
pid: 71560
time: 2018-11-28 19:16:24$

3.2 常用命令

3.2.1 dashboard

$ dashboard
ID     NAME                   GROUP          PRIORI STATE  %CPU    TIME   INTERRU DAEMON
17     pool-2-thread-1        system         5      WAITIN 67      0:0    false   false
27     Timer-for-arthas-dashb system         10     RUNNAB 32      0:0    false   true
11     AsyncAppender-Worker-a system         9      WAITIN 0       0:0    false   true
9      Attach Listener        system         9      RUNNAB 0       0:0    false   true
3      Finalizer              system         8      WAITIN 0       0:0    false   true
2      Reference Handler      system         10     WAITIN 0       0:0    false   true
4      Signal Dispatcher      system         9      RUNNAB 0       0:0    false   true
26     as-command-execute-dae system         10     TIMED_ 0       0:0    false   true
13     job-timeout            system         9      TIMED_ 0       0:0    false   true
1      main                   main           5      TIMED_ 0       0:0    false   false
14     nioEventLoopGroup-2-1  system         10     RUNNAB 0       0:0    false   false
18     nioEventLoopGroup-2-2  system         10     RUNNAB 0       0:0    false   false
23     nioEventLoopGroup-2-3  system         10     RUNNAB 0       0:0    false   false
15     nioEventLoopGroup-3-1  system         10     RUNNAB 0       0:0    false   false
Memory             used   total max    usage GC
heap               32M    155M  1820M  1.77% gc.ps_scavenge.count  4
ps_eden_space      14M    65M   672M   2.21% gc.ps_scavenge.time(m 166
ps_survivor_space  4M     5M    5M           s)
ps_old_gen         12M    85M   1365M  0.91% gc.ps_marksweep.count 0
nonheap            20M    23M   -1           gc.ps_marksweep.time( 0
code_cache         3M     5M    240M   1.32% ms)
Runtime
os.name                Mac OS X
os.version             10.13.4
java.version           1.8.0_162
java.home              /Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home/jre

3.2.2 thread

thread 1会打印线程 ID 1 的栈,通常是 main 函数的线程

$ thread 1 | grep 'main('at demo.MathGame.main(MathGame.java:17)

3.2.3 jad

反编译 Main Class

$ jad demo.MathGameClassLoader:
+-sun.misc.Launcher$AppClassLoader@3d4eac69+-sun.misc.Launcher$ExtClassLoader@66350f69Location:
/tmp/math-game.jar/** Decompiled with CFR 0_132.*/
package demo;import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Random;
import java.util.concurrent.TimeUnit;public class MathGame {private static Random random = new Random();private int illegalArgumentCount = 0;public static void main(String[] args) throws InterruptedException {MathGame game = new MathGame();do {game.run();TimeUnit.SECONDS.sleep(1L);} while (true);}public void run() throws InterruptedException {try {int number = random.nextInt();List<Integer> primeFactors = this.primeFactors(number);MathGame.print(number, primeFactors);}catch (Exception e) {System.out.println(String.format("illegalArgumentCount:%3d, ", this.illegalArgumentCount) + e.getMessage());}}public static void print(int number, List<Integer> primeFactors) {StringBuffer sb = new StringBuffer("" + number + "=");Iterator<Integer> iterator = primeFactors.iterator();while (iterator.hasNext()) {int factor = iterator.next();sb.append(factor).append('*');}if (sb.charAt(sb.length() - 1) == '*') {sb.deleteCharAt(sb.length() - 1);}System.out.println(sb);}public List<Integer> primeFactors(int number) {if (number < 2) {++this.illegalArgumentCount;throw new IllegalArgumentException("number is: " + number + ", need >= 2");}ArrayList<Integer> result = new ArrayList<Integer>();int i = 2;while (i <= number) {if (number % i == 0) {result.add(i);number /= i;i = 2;continue;}++i;}return result;}
}Affect(row-cnt:1) cost in 970 ms.

3.2.4 watch

查看demo.MathGame#primeFactors函数的返回值

$ watch demo.MathGame primeFactors returnObj
Press Ctrl+C to abort.
Affect(class-cnt:1 , method-cnt:1) cost in 107 ms.
ts=2018-11-28 19:22:30; [cost=1.715367ms] result=null
ts=2018-11-28 19:22:31; [cost=0.185203ms] result=null
ts=2018-11-28 19:22:32; [cost=19.012416ms] result=@ArrayList[@Integer[5],@Integer[47],@Integer[2675531],
]
ts=2018-11-28 19:22:33; [cost=0.311395ms] result=@ArrayList[@Integer[2],@Integer[5],@Integer[317],@Integer[503],@Integer[887],
]
ts=2018-11-28 19:22:34; [cost=10.136007ms] result=@ArrayList[@Integer[2],@Integer[2],@Integer[3],@Integer[3],@Integer[31],@Integer[717593],
]
ts=2018-11-28 19:22:35; [cost=29.969732ms] result=@ArrayList[@Integer[5],@Integer[29],@Integer[7651739],
]

3.2.5 getstatic

通过 getstatic 命令可以方便的查看类的静态属性。使用方法为getstatic class_name field_name

$ getstatic demo.MathGame random
field: random
@Random[serialVersionUID=@Long[3905348978240129619],seed=@AtomicLong[120955813885284],multiplier=@Long[25214903917],addend=@Long[11],mask=@Long[281474976710655],DOUBLE_UNIT=@Double[1.1102230246251565E-16],BadBound=@String[bound must be positive],BadRange=@String[bound must be greater than origin],BadSize=@String[size must be non-negative],seedUniquifier=@AtomicLong[-3282039941672302964],nextNextGaussian=@Double[0.0],haveNextNextGaussian=@Boolean[false],serialPersistentFields=@ObjectStreamField[][isEmpty=false;size=3],unsafe=@Unsafe[sun.misc.Unsafe@2eaa1027],seedOffset=@Long[24],
]

3.2.6 heapdump

3.2.6.1 dump到指定的文件

[arthas@58205]$ heapdump /tmp/dump.hprof
Dumping heap to /tmp/dump.hprof...
Heap dump file created

3.2.6.2 dump live 对象

[arthas@58205]$ heapdump --live /tmp/dump-live.hprof
Dumping heap to /tmp/dump.hprof...
Heap dump file created

3.2.6.3 dump 到临时文件

[arthas@58205]$ heapdump
Dumping heap to /var/folders/my/wy7c9w9j5732xbkcyt1mb4g40000gp/T/heapdump2019-09-03-16-385121018449645518991.hprof...
Heap dump file created

3.2.7 jvm

$ jvm
RUNTIME
--------------------------------------------------------------------------------------------------------------MACHINE-NAME                   37@ff267334bb65JVM-START-TIME                 2020-07-23 07:50:36MANAGEMENT-SPEC-VERSION        1.2SPEC-NAME                      Java Virtual Machine SpecificationSPEC-VENDOR                    Oracle CorporationSPEC-VERSION                   1.8VM-NAME                        Java HotSpot(TM) 64-Bit Server VMVM-VENDOR                      Oracle CorporationVM-VERSION                     25.201-b09INPUT-ARGUMENTS                []CLASS-PATH                     demo-arthas-spring-boot.jarBOOT-CLASS-PATH                /usr/lib/jvm/java-8-oracle/jre/lib/resources.jar:/usr/lib/jvm/java-8-oracle/jre/lib/rt.jar:/usr/lib/jvm/java-8-oracle/jre/lib/sunrsasign.jar:/usr/lib/jvm/java-8-oracle/jre/lib/jsse.jar:/usr/lib/jvm/java-8-oracle/jre/lib/jce.jar:/usr/lib/jvm/java-8-oracle/jre/lib/charsets.jar:/usr/lib/jvm/java-8-oracle/jre/lib/jfr.jar:/usr/lib/jvm/java-8-oracle/jre/classesLIBRARY-PATH                   /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib--------------------------------------------------------------------------------------------------------------CLASS-LOADING
--------------------------------------------------------------------------------------------------------------LOADED-CLASS-COUNT             7529TOTAL-LOADED-CLASS-COUNT       7529UNLOADED-CLASS-COUNT           0IS-VERBOSE                     false--------------------------------------------------------------------------------------------------------------COMPILATION
--------------------------------------------------------------------------------------------------------------NAME                           HotSpot 64-Bit Tiered CompilersTOTAL-COMPILE-TIME             14921(ms)--------------------------------------------------------------------------------------------------------------GARBAGE-COLLECTORS
--------------------------------------------------------------------------------------------------------------PS Scavenge                            name : PS Scavenge[count/time (ms)]                      collectionCount : 7collectionTime : 68PS MarkSweep                           name : PS MarkSweep[count/time (ms)]                      collectionCount : 1collectionTime : 47--------------------------------------------------------------------------------------------------------------MEMORY-MANAGERS
--------------------------------------------------------------------------------------------------------------CodeCacheManager               Code CacheMetaspace Manager              MetaspaceCompressed Class SpaceCopy                           Eden SpaceSurvivor SpaceMarkSweepCompact               Eden SpaceSurvivor SpaceTenured Gen--------------------------------------------------------------------------------------------------------------MEMORY
--------------------------------------------------------------------------------------------------------------HEAP-MEMORY-USAGE                      init : 268435456(256.0 MiB)[memory in bytes]                      used : 18039504(17.2 MiB)committed : 181403648(173.0 MiB)max : 3817865216(3.6 GiB)NO-HEAP-MEMORY-USAGE                   init : 2555904(2.4 MiB)[memory in bytes]                      used : 33926216(32.4 MiB)committed : 35176448(33.5 MiB)max : -1(-1 B)--------------------------------------------------------------------------------------------------------------OPERATING-SYSTEM
--------------------------------------------------------------------------------------------------------------OS                             LinuxARCH                           amd64PROCESSORS-COUNT               3LOAD-AVERAGE                   29.53VERSION                        4.15.0-52-generic--------------------------------------------------------------------------------------------------------------THREAD
--------------------------------------------------------------------------------------------------------------COUNT                          30DAEMON-COUNT                   24PEAK-COUNT                     31STARTED-COUNT                  36DEADLOCK-COUNT                 0--------------------------------------------------------------------------------------------------------------FILE-DESCRIPTOR
--------------------------------------------------------------------------------------------------------------MAX-FILE-DESCRIPTOR-COUNT      1048576OPEN-FILE-DESCRIPTOR-COUNT     100
Affect(row-cnt:0) cost in 88 ms.

3.2.8 logger

[arthas@2062]$ loggername                                   ROOTclass                                  ch.qos.logback.classic.LoggerclassLoader                            sun.misc.Launcher$AppClassLoader@2a139a55classLoaderHash                        2a139a55level                                  INFOeffectiveLevel                         INFOadditivity                             truecodeSource                             file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jarappenders                              name            CONSOLEclass           ch.qos.logback.core.ConsoleAppenderclassLoader     sun.misc.Launcher$AppClassLoader@2a139a55classLoaderHash 2a139a55target          System.outname            APPLICATIONclass           ch.qos.logback.core.rolling.RollingFileAppenderclassLoader     sun.misc.Launcher$AppClassLoader@2a139a55classLoaderHash 2a139a55file            app.logname            ASYNCclass           ch.qos.logback.classic.AsyncAppenderclassLoader     sun.misc.Launcher$AppClassLoader@2a139a55classLoaderHash 2a139a55appenderRef     [APPLICATION]

3.2.9 mbean

查看或监控 Mbean 的属性信息。

参数名称 参数说明
name-pattern 名称表达式匹配
attribute-pattern 属性名表达式匹配
[m] 查看元信息
[i:] 刷新属性值的时间间隔 (ms)
[n:] 刷新属性值的次数
[E] 开启正则表达式匹配,默认为通配符匹配。仅对属性名有效

3.2.9.1 列出所有 Mbean 的名称

mbean

3.2.9.2 查看 Mbean 的元信息

mbean -m java.lang:type=Threading

3.2.9.3 查看 mbean 属性信息

mbean java.lang:type=Threading

3.2.9.4 mbean 的 name 支持通配符匹配

mbean java.lang:type=Th*

3.2.9.5 通配符匹配特定的属性字段:

mbean java.lang:type=Threading *Count

3.2.9.6 使用-E命令切换为正则匹配:

mbean -E java.lang:type=Threading PeakThreadCount|ThreadCount|DaemonThreadCount

3.2.9.7 使用-i命令实时监控

mbean -i 1000 java.lang:type=Threading *Count

3.2.10 memory

$ memory
Memory                           used      total      max        usage
heap                             32M       256M       4096M      0.79%
g1_eden_space                    11M       68M        -1         16.18%
g1_old_gen                       17M       184M       4096M      0.43%
g1_survivor_space                4M        4M         -1         100.00%
nonheap                          35M       39M        -1         89.55%
codeheap_'non-nmethods'          1M        2M         5M         20.53%
metaspace                        26M       27M        -1         96.88%
codeheap_'profiled_nmethods'     4M        4M         117M       3.57%
compressed_class_space           2M        3M         1024M      0.29%
codeheap_'non-profiled_nmethods' 685K      2496K      120032K    0.57%
mapped                           0K        0K         -          0.00%
direct                           48M       48M        -          100.00%

3.2.11 ognl

参数名称 参数说明
express 执行的表达式
[c:] 执行表达式的 ClassLoader 的 hashcode,默认值是 SystemClassLoader
[classLoaderClass:] 指定执行表达式的 ClassLoader 的 class name
[x] 结果对象的展开层次,默认值 1

3.2.11.1 通过 hashcode 指定 ClassLoader

$ classloader -t
+-BootstrapClassLoader
+-jdk.internal.loader.ClassLoaders$PlatformClassLoader@301ec38b+-com.taobao.arthas.agent.ArthasClassloader@472067c7+-jdk.internal.loader.ClassLoaders$AppClassLoader@4b85612c+-org.springframework.boot.loader.LaunchedURLClassLoader@7f9a81e8$ ognl -c 7f9a81e8 @org.springframework.boot.SpringApplication@logger
@Slf4jLocationAwareLog[FQCN=@String[org.apache.commons.logging.LogAdapter$Slf4jLocationAwareLog],name=@String[org.springframework.boot.SpringApplication],logger=@Logger[Logger[org.springframework.boot.SpringApplication]],
]
$

注意 hashcode 是变化的,需要先查看当前的 ClassLoader 信息,提取对应 ClassLoader 的 hashcode。

对于只有唯一实例的 ClassLoader 可以通过 class name 指定,使用起来更加方便:

$ ognl --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader  @org.springframework.boot.SpringApplication@logger
@Slf4jLocationAwareLog[FQCN=@String[org.apache.commons.logging.LogAdapter$Slf4jLocationAwareLog],name=@String[org.springframework.boot.SpringApplication],logger=@Logger[Logger[org.springframework.boot.SpringApplication]],
]

3.2.11.2 执行多行表达式

赋值给临时变量,返回一个 List:

$ ognl '#value1=@System@getProperty("java.home"), #value2=@System@getProperty("java.runtime.name"), {#value1, #value2}'
@ArrayList[@String[/opt/java/8.0.181-zulu/jre],@String[OpenJDK Runtime Environment],
]

3.2.12 perfcounter

$ perfcounterjava.ci.totalTime                            2325637411java.cls.loadedClasses                       3403java.cls.sharedLoadedClasses                 0java.cls.sharedUnloadedClasses               0java.cls.unloadedClasses                     0java.property.java.version                   11.0.4java.property.java.vm.info                   mixed modejava.property.java.vm.name                   OpenJDK 64-Bit Server VM
...

3.2.13 sysenv

$ sysenvKEY                      VALUE
----------------------------------------------------------------------------------------------------------------------------PATH                     /Users/admin/.sdkman/candidates/visualvm/current/bin:/Users/admin/.sdkman/candidates/java/current/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/Wireshark.app/Contents/MacOSSDKMAN_VERSION           5.7.3+337JAVA_HOME                /Users/admin/.sdkman/candidates/java/currentJAVA_MAIN_CLASS_65244    demo.MathGameTERM                     xterm-256colorLANG                     zh_CN.UTF-8AUTOJUMP_SOURCED         1COLORTERM                truecolorLOGNAME                  adminXPC_SERVICE_NAME         0PWD                      /Users/admin/code/ali/arthas/demoTERM_PROGRAM_VERSION     3.2.5_                        /Users/admin/.sdkman/candidates/java/current/bin/javaSHELL                    /bin/bashTERM_PROGRAM             iTerm.appSDKMAN_PLATFORM          DarwinUSER                     adminITERM_PROFILE            DefaultTMPDIR                   /var/folders/0r/k561bkk917gg972stqclbz9h0000gn/T/XPC_FLAGS                0x0TERM_SESSION_ID          w0t4p0:60BC264D-9649-42AC-A7E4-AF85B69F93F8__CF_USER_TEXT_ENCODING  0x1F5:0x19:0x34Apple_PubSub_Socket_Ren  /private/tmp/com.apple.launchd.DwmmjSQsll/RenderderCOLORFGBG                7;0HOME                     /Users/adminSHLVL                    1AUTOJUMP_ERROR_PATH      /Users/admin/Library/autojump/errors.log

3.2.14 vmoption

[arthas@56963]$ vmoptionKEY                    VALUE                   ORIGIN                 WRITEABLE
---------------------------------------------------------------------------------------------HeapDumpBeforeFullGC   false                   DEFAULT                trueHeapDumpAfterFullGC    false                   DEFAULT                trueHeapDumpOnOutOfMemory  false                   DEFAULT                trueErrorHeapDumpPath                                   DEFAULT                trueCMSAbortablePrecleanW  100                     DEFAULT                trueaitMillisCMSWaitDuration        2000                    DEFAULT                trueCMSTriggerInterval     -1                      DEFAULT                truePrintGC                false                   DEFAULT                truePrintGCDetails         true                    MANAGEMENT             truePrintGCDateStamps      false                   DEFAULT                truePrintGCTimeStamps      false                   DEFAULT                truePrintGCID              false                   DEFAULT                truePrintClassHistogramBe  false                   DEFAULT                trueforeFullGCPrintClassHistogramAf  false                   DEFAULT                trueterFullGCPrintClassHistogram    false                   DEFAULT                trueMinHeapFreeRatio       0                       DEFAULT                trueMaxHeapFreeRatio       100                     DEFAULT                truePrintConcurrentLocks   false                   DEFAULT                true

3.2.15 vmtool

$ vmtool --action getInstances --className java.lang.String --limit 10
@String[][@String[com/taobao/arthas/core/shell/session/Session],@String[com.taobao.arthas.core.shell.session.Session],@String[com/taobao/arthas/core/shell/session/Session],@String[com/taobao/arthas/core/shell/session/Session],@String[com/taobao/arthas/core/shell/session/Session.class],@String[com/taobao/arthas/core/shell/session/Session.class],@String[com/taobao/arthas/core/shell/session/Session.class],@String[com/],@String[java/util/concurrent/ConcurrentHashMap$ValueIterator],@String[java/util/concurrent/locks/LockSupport],
]

3.2.16 classloader

参数名称 Value
[l] 按类加载实例进行统计
[t] 打印所有 ClassLoader 的继承树
[a] 列出所有 ClassLoader 加载的类,请谨慎使用
[c:] ClassLoader 的 hashcode
[classLoaderClass:] 指定执行表达式的 ClassLoader 的 class name
[c: r:] 用 ClassLoader 去查找 resource
[c: load:] 用 ClassLoader 去加载指定的类

3.2.17 dump

参数名称 参数说明
class-pattern 类名表达式匹配
[c:] 类所属 ClassLoader 的 hashcode
[classLoaderClass:] 指定执行表达式的 ClassLoader 的 class name
[d:] 设置类文件的目标目录
[E] 开启正则表达式匹配,默认为通配符匹配

3.2.18 mc

Memory Compiler/内存编译器,编译.java文件生成.class。

mc /tmp/Test.java

3.2.19 redefine

参数名称 参数说明
[c:] ClassLoader 的 hashcode
[classLoaderClass:] 指定执行表达式的 ClassLoader 的 class name

3.2.20 retransform

加载外部的.class文件,retransform jvm 已加载的类

   retransform /tmp/Test.classretransform -lretransform -d 1                    # delete retransform entryretransform --deleteAll             # delete all retransform entriesretransform --classPattern demo.*   # triger retransform classesretransform -c 327a647b /tmp/Test.class /tmp/Test\$Inner.classretransform --classLoaderClass 'sun.misc.Launcher$AppClassLoader' /tmp/Test.class

3.2.21 sc

查看 JVM 已加载的类信息

参数名称 参数说明
class-pattern 类名表达式匹配
method-pattern 方法名表达式匹配
[d] 输出当前类的详细信息,包括这个类所加载的原始文件来源、类的声明、加载的 ClassLoader 等详细信息。
如果一个类被多个 ClassLoader 所加载,则会出现多次
[E] 开启正则表达式匹配,默认为通配符匹配
[f] 输出当前类的成员变量信息(需要配合参数-d 一起使用)
[x:] 指定输出静态变量时属性的遍历深度,默认为 0,即直接使用 toString 输出
[c:] 指定 class 的 ClassLoader 的 hashcode
[classLoaderClass:] 指定执行表达式的 ClassLoader 的 class name
[n:] 具有详细信息的匹配类的最大数量(默认为 100)

3.2.22 sm

参数名称 参数说明
class-pattern 类名表达式匹配
method-pattern 方法名表达式匹配
[d] 展示每个方法的详细信息
[E] 开启正则表达式匹配,默认为通配符匹配
[c:] 指定 class 的 ClassLoader 的 hashcode
[classLoaderClass:] 指定执行表达式的 ClassLoader 的 class name
[n:] 具有详细信息的匹配类的最大数量(默认为 100)

3.2.23 monitor

参数名称 参数说明
class-pattern 类名表达式匹配
method-pattern 方法名表达式匹配
condition-express 条件表达式
[E] 开启正则表达式匹配,默认为通配符匹配
[c:] 统计周期,默认值为 120 秒
[b] 在方法调用之前计算 condition-express

3.2.24 stack

参数名称 参数说明
class-pattern 类名表达式匹配
method-pattern 方法名表达式匹配
condition-express 条件表达式
[E] 开启正则表达式匹配,默认为通配符匹配
[n:] 执行次数限制

3.2.25 trace

参数名称 参数说明
class-pattern 类名表达式匹配
method-pattern 方法名表达式匹配
condition-express 条件表达式
[E] 开启正则表达式匹配,默认为通配符匹配
[n:] 命令执行次数
#cost 方法执行耗时

3.2.26 tt

$ tt -t demo.MathGame primeFactors
Press Ctrl+C to abort.
Affect(class-cnt:1 , method-cnt:1) cost in 66 ms.INDEX   TIMESTAMP            COST(ms)  IS-RET  IS-EXP   OBJECT         CLASS                          METHOD
-------------------------------------------------------------------------------------------------------------------------------------1000    2018-12-04 11:15:38  1.096236  false   true     0x4b67cf4d     MathGame                       primeFactors1001    2018-12-04 11:15:39  0.191848  false   true     0x4b67cf4d     MathGame                       primeFactors1002    2018-12-04 11:15:40  0.069523  false   true     0x4b67cf4d     MathGame                       primeFactors1003    2018-12-04 11:15:41  0.186073  false   true     0x4b67cf4d     MathGame                       primeFactors1004    2018-12-04 11:15:42  17.76437  true    false    0x4b67cf4d     MathGame

3.2.27 auth

[arthas@37430]$ auth ppp
Authentication result: true

3.2.28 options

$ optionsLEVEL  TYPE    NAME          VALUE   SUMMARY               DESCRIPTION
-------------------------------------------------------------------------------------------------------0      boolea  unsafe        false   Option to support sy  This option enables to proxy functionalityn                             stem-level class       of JVM classes. Due to serious security risk a JVM crash is possibly be introduced.Do not activate it unless you are able tomanage.1      boolea  dump          false   Option to dump the e  This option enables the enhanced classes tn                             nhanced classes       o be dumped to external file for further de-compilation and analysis.1      boolea  batch-re-tra  true    Option to support ba  This options enables to reTransform classen       nsform                tch reTransform Clas  s with batch mode.s2      boolea  json-format   false   Option to support JS  This option enables to format object outpun                             ON format of object   t with JSON when -x option selected.output1      boolea  disable-sub-  false   Option to control in  This option disable to include sub class wn       class                 clude sub class when  hen matching class.class matching1      boolea  support-defa  true    Option to control in  This option disable to include default metn       ult-method            clude default method  hod in interface when matching class.in interface when class matching1      boolea  save-result   false   Option to print comm  This option enables to save each command'sn                             and's result to log    result to log file, which path is ${user.file                  home}/logs/arthas-cache/result.log.2      String  job-timeout   1d      Option to job timeou  This option setting job timeout,The unit ct                     an be d, h, m, s for day, hour, minute, second. 1d is one day in default1      boolea  print-parent  true    Option to print all   This option enables print files in parentn       -fields               fileds in parent cla  class, default value true.ss1      boolea  verbose       false   Option to print verb  This option enables print verbose informatn                             ose information       ion, default value false.1      boolea  strict        true    Option to strict mod  By default, strict mode is true, not allown                             e                     ed to set object properties. Want to set object properties, execute `options strictfalse`

3.2.29 base64

[arthas@70070]$ echo 'abc' > /tmp/test.txt
[arthas@70070]$ cat /tmp/test.txt
abc[arthas@70070]$ base64 /tmp/test.txt
YWJjCg==

3.2.30 cat

$ cat /tmp/a.txt

3.2.31 cls

清空当前屏幕区域

3.2.32 echo

打印参数,和 linux 里的 echo 命令类似。

3.2.33 grep

类似传统的grep命令。

3.2.34 help

[help 指令]的等同于[指令 -help],都是查看具体指令的使用说明。

3.2.35 history

3.2.35.1 查看最近执行的3条指令

$ history 3269  thread270  cls271  history 3

3.2.35.2 清空指令

 $ history -c$ history 31  history 3

3.2.36 keymap

keymap命令输出当前的快捷键映射表

3.2.37 pwd

返回当前的工作目录,和 linux 命令类似

3.2.38 tee

tee 指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。

3.2.39 profile

[arthas@25575]$ profiler start
Profiling started
[arthas@25575]$ profiler getSamples
291
[arthas@25575]$ profiler status
Profiling is running for 39 seconds
[arthas@25575]$ profiler stop
OK
profiler output file: /data/src/flume/teflume-prod/apache-flume-1.9.0-bin/arthas-output/20220621-161810.html

3.2.40 session

如果配置了 tunnel server,会追加打印 代理 id、tunnel 服务器的 url 以及连接状态。使用了 staturl 做统计,会追加显示 statUrl 地址。

$ sessionName        Value
--------------------------------------------------JAVA_PID    14584SESSION_ID  c2073d3b-443a-4a9b-9249-0c5d24a5756c

3.2.41 version

输出当前目标 Java 进程所加载的 Arthas 版本号。

$ version3.5.1

3.2.42 quit

退出当前 Arthas 客户端,其他 Arthas 客户端不受影响。等同于exit、logout、q三个指令。

3.2.43 reset

重置增强类,将被 Arthas 增强过的类全部还原,Arthas 服务端stop时会重置所有增强过的类。

3.2.43.1 还原指定类

$ trace Test test
Press Ctrl+C to abort.
Affect(class-cnt:1 , method-cnt:1) cost in 57 ms.
`---ts=2017-10-26 17:10:33;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@14dad5dc`---[0.590102ms] Test:test()`---ts=2017-10-26 17:10:34;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@14dad5dc`---[0.068692ms] Test:test()$ reset Test
Affect(class-cnt:1 , method-cnt:0) cost in 11 ms.

3.2.43.2 还原所有类

$ trace Test test
Press Ctrl+C to abort.
Affect(class-cnt:1 , method-cnt:1) cost in 15 ms.
`---ts=2017-10-26 17:12:06;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@14dad5dc`---[0.128518ms] Test:test()$ reset
Affect(class-cnt:1 , method-cnt:0) cost in 9 ms

3.2.44 stop

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

arthas的监控java性能相关推荐

  1. 关于Java性能监控您不知道的5件事

    责怪糟糕的代码(或不良代码对象)并不能帮助您发现瓶颈,提高 Java™ 应用程序速度,猜测也不能帮您解决.Ted Neward 引导您关注 Java 性能监控工具,从5 个技巧开始,使用Java 5 ...

  2. java监控数据库性能_Java:GraalVM数据库流性能

    java监控数据库性能 GraalVM是JVM块的新成员. 它是一个开源虚拟机,能够同时运行多种编程语言,例如Java,Rust和JavaScript. GraalVM还具有一个新的内部代码优化器管道 ...

  3. 开源java性能分析工具_Java性能监控:您应该知道的5个开源工具

    开源java性能分析工具 鲜为人知但有用:开源应用程序性能监视的状态 对于任何应用程序来说,最重要的事情之一就是性能. 我们要确保用户获得他们能获得的最佳体验,并想知道我们的应用已启动并正在运行. 这 ...

  4. java 无侵入监控_MyPerf4J 一个高性能、无侵入的Java性能监控和统计工具

    MyPerf4J 一个针对高并发.低延迟应用设计的高性能且无侵入的实时Java性能监控和统计工具. 受 perf4j 和 TProfiler启发而来. MyPerf4J具有以下几个特性: 无侵入: 采 ...

  5. 接口 java性能_MyPerf4J 一个极快的Java接口性能监控和统计工具

    MyPerf4J 一个针对高并发.低延迟应用设计的高性能 Java 性能监控和统计工具. 价值 快速定位性能瓶颈 快速定位故障原因 优势 高性能: 单线程支持每秒 1600 万次 响应时间的记录,每次 ...

  6. 关于 Java 性能监控您不知道的 5 件事,第 1 部分

    责怪糟糕的代码(或不良代码对象)并不能帮助您发现瓶颈,提高 Java? 应用程序速度,猜测也不能帮您解决.Ted Neward 引导您关注 Java 性能监控工具,从5 个技巧开始,使用Java 5 ...

  7. [java]深入剖析Java性能监控调优视频教程

    课程概述 基于JDK命令行工具的监控 基于JVisualVM的可视化监控 基于Btrace的监控调试 Tomcat性能监控与调优 Nginx性能监控与调优 JVM层GC调优 JVM字节码与Java代码 ...

  8. zabbix学习4: 监控Java原理-zabbix性能优化-低级自动发现-zabbix api

    文章目录 20: zabbix监控java jvm原理 21: zabbix性能优化 22: zabbix低级自动发现 23: zabbix api 20: zabbix监控java jvm原理 to ...

  9. Java性能监控和故障诊断可视化工具之jmc

    前面的文章中我们介绍了jvisualvm,本篇文章我们来介绍下目前为止功能最为强大的可视化工具jmc.jmc(Java Mission Control)是jdk1.7开始引入的JVM监控工具.jmc可 ...

最新文章

  1. 设置计算机在睡眠状态下能共享,使用wifi共享精灵的过程中电脑会自动休眠锁屏的解决方法...
  2. java 常见几种发送http请求案例
  3. 服务器换账号登陆不了怎么办,怎么切换账号 更换账号 注册新的账号小技巧分享给你...
  4. python2转python3代码_2to3 – 自动Python 2到3代码翻译 – 开发工具(Python教程)(参考资料)...
  5. linux下使用odbc连接mysql_Linux环境下通过ODBC访问MSSql Server
  6. *关于C++堆和栈的理解
  7. VBS 与 VBA 的区别
  8. CMMI认证需要什么条件?
  9. gg修改器偏移量修改_gg修改器偏移量什么意思 | 手游网游页游攻略大全
  10. 入职与离职手续、五险一金、档案
  11. javascript原生代码实现轮播图片
  12. 财务系统服务器计入什么科目,系统服务费入什么科目
  13. 微信订阅号改回列表显示
  14. “您未安装Flash控件”解决方法
  15. 简述 matlab 命令窗的主要作用,matlab复习
  16. 用.NET开发MSN聊天机器人 - MSN聊天机器人开发揭秘
  17. 利用opencv-python绘制多边形框或(半透明)区域填充(可用于分割任务mask可视化)
  18. [LOCAL] 画画图(结论 + DP + 常数分析) | 错题本
  19. 百度开源地图服务器搭建
  20. 一个人的精神结构和他的精神资源

热门文章

  1. php printer 使用,printer扩张的一些使用疑问
  2. 小米智能互联电脑版总是弹出_小米智能互联PC版-小米智能互联下载v1.1.0.453-IE浏览器中文网站...
  3. 关于微信小程序(应用号)的全部看法[转]
  4. C. Equalize(贪心)
  5. Magisk工具使用指南
  6. 关于MOMODA的隐私权政策
  7. 图形图像的基础知识总结
  8. 一个完整的大作业--广州市社会保障(市民)卡服务网
  9. 论文:预测原子距离进行构象预测(VAE)
  10. k8s搭建 rabbitmq集群