You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
arthas/site/docs/en/doc/advanced-use.md

6.4 KiB

Advanced Usage

Basic

  • help - display Arthas help
  • cls - clear the screen
  • cat - Concatenate and print files
  • echo - write arguments to the standard output
  • grep - Pattern searcher
  • base64 - Encode and decode using Base64 representation.
  • tee - Copies standard input to standard output, making a copy in zero or more files.
  • pwd - Return working directory name
  • session - display current session information
  • reset - reset all the enhanced classes. All enhanced classes will also be reset when Arthas server is closed by stop
  • version - print the version for the Arthas attached to the current Java process
  • history - view command history
  • quit/exit - exit the current Arthas session, without effecting other sessions
  • stop - terminate the Arthas server, all Arthas sessions will be destroyed
  • keymap - keymap for Arthas keyboard shortcut

JVM

  • dashboard - dashboard for the system's real-time data
  • thread - show java thread information
  • jvm - show JVM information
  • sysprop - view/modify system properties
  • sysenv — view system environment variables
  • vmoption - view/modify the vm diagnostic options.
  • perfcounter - show JVM Perf Counter information
  • logger - print the logger information, update the logger level
  • getstatic - examine class's static properties
  • ognl - execute ognl expression
  • mbean - show Mbean information
  • heapdump - dump java heap in hprof binary format, like jmap
  • vmtool - jvm tool, getInstances in jvm, forceGc

class/classloader

  • sc - check the info for the classes loaded by JVM
  • sm - check methods info for the loaded classes
  • jad - decompile the specified loaded classes
  • mc - Memory compiler, compiles .java files into .class files in memory
  • retransform - load external *.class files and retransform it into JVM
  • redefine - load external *.class files and re-define it into JVM
  • dump - dump the loaded classes in byte code to the specified location
  • classloader - check the inheritance structure, urls, class loading info for the specified class; using classloader to get the url of the resource e.g. java/lang/String.class

::: warning Attention: commands here are taking advantage of byte-code-injection, which means we are injecting some aspects into the current classes for monitoring and statistics purpose. Therefore, when using it for online troubleshooting in your production environment, you'd better explicitly specify classes/methods/criteria, and remember to remove the injected code by stop or reset. :::

  • monitor - monitor method execution statistics
  • watch - display the input/output parameter, return object, and thrown exception of specified method invocation
  • trace - trace the execution time of specified method invocation
  • stack - display the stack trace for the specified class and method
  • tt - time tunnel, record the arguments and returned value for the methods and replay

authentication

  • auth - authentication

options

  • options - check/set Arthas global options

profiler/flame graph

pipe

Arthas provides pipe to process the result returned from commands further, e.g. sm java.lang.String * | grep 'index'. Commands supported in pipe:

  • grep - filter the result with the given keyword
  • plaintext - remove the ANSI color
  • wc - count lines

async jobs

async can be handy when a problem is hardly to reproduce in the production environment, e.g. one watch condition may happen only once in one single day.

  • job control - use > to redirect result into the log file, use & to put the job to the background. Job keeps running even if the session is disconnected (the session lifecycle is 1 day by default)
  • jobs - list all jobs
  • kill - forcibly terminate the job
  • fg - bring the suspend job to the foreground
  • bg - put the job to run in the background

Web Console

Arthas supports living inside a browser. The communication between arthas and browser is via websocket.

Arthas Properties

Start as a Java Agent

as.sh and arthas-boot tips

  • Select the process to be attached via the select option.

Normally, as.sh/arthas-boot.jar needs to a pid, bacause the pid will change.

For example, with math-game.jar already started, use the jps command to see.

$ jps
58883 math-game.jar
58884 Jps

The select option allows you to specify a process name, which is very convenient.

$ ./as.sh --select math-game
Arthas script version: 3.3.6
[INFO] JAVA_HOME: /tmp/java/8.0.222-zulu
Arthas home: /Users/admin/.arthas/lib/3.3.6/arthas
Calculating attach execution time...
Attaching to 59161 using version /Users/admin/.arthas/lib/3.3.6/arthas...

real	0m0.572s
user	0m0.281s
sys	0m0.039s
Attach success.
telnet connecting to arthas server... current timestamp is 1594280799
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
  ,---.  ,------. ,--------.,--.  ,--.  ,---.   ,---.
 /  O  \ |  .--. ''--.  .--'|  '--'  | /  O  \ '   .-'
|  .-.  ||  '--'.'   |  |   |  .--.  ||  .-.  |`.  `-.
|  | |  ||  |\  \    |  |   |  |  |  ||  | |  |.-'    |
`--' `--'`--' '--'   `--'   `--'  `--'`--' `--'`-----'


wiki      https://arthas.aliyun.com/doc
tutorials https://arthas.aliyun.com/doc/arthas-tutorials.html
version   3.3.6
pid       58883

User data report

After the 3.1.4 version, arthas support user data report.

At startup, use the stat-url option, such as: ./as.sh --stat-url 'http://192.168.10.11:8080/api/stat'

There is a sample data report in the tunnel server that users can implement on their own.

StatController.java