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/en/advanced-use.html

415 lines
21 KiB
HTML

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Advanced Usage &mdash; Arthas 3.3.4 documentation</title>
<link rel="shortcut icon" href="_static/favicon.ico"/>
<script type="text/javascript" src="_static/js/modernizr.min.js"></script>
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/language_data.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/overrides.css" type="text/css" />
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="Web Console" href="web-console.html" />
<link rel="prev" title="Quick Start" href="quick-start.html" />
<script src="_static/center_page.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/styles/github.min.css">
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="index.html" class="icon icon-home"> Arthas
</a>
<div class="version">
3.3.4
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul class="current">
<li class="toctree-l1"><a class="reference external" href="https://alibaba.github.io/arthas/arthas-tutorials?language=en">Online tutorials(Recommend)</a></li>
<li class="toctree-l1"><a class="reference internal" href="install-detail.html">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="download.html">Download</a></li>
<li class="toctree-l1"><a class="reference internal" href="quick-start.html">Quick start</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Advanced usage</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#basic">Basic</a></li>
<li class="toctree-l2"><a class="reference internal" href="#jvm">JVM</a></li>
<li class="toctree-l2"><a class="reference internal" href="#class-classloader">class/classloader</a></li>
<li class="toctree-l2"><a class="reference internal" href="#monitor-watch-trace-related">monitor/watch/trace - related</a></li>
<li class="toctree-l2"><a class="reference internal" href="#options">options</a></li>
<li class="toctree-l2"><a class="reference internal" href="#profiler-flame-graph">profiler/flame graph</a></li>
<li class="toctree-l2"><a class="reference internal" href="#pipe">pipe</a></li>
<li class="toctree-l2"><a class="reference internal" href="#async-in-background">async in background</a></li>
<li class="toctree-l2"><a class="reference internal" href="#web-console">Web Console</a><ul>
<li class="toctree-l3"><a class="reference internal" href="web-console.html">Web Console</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#start-as-a-java-agent">Start as a Java Agent</a><ul>
<li class="toctree-l3"><a class="reference internal" href="agent.html">Start as a Java Agent</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#user-data-report">User data report</a></li>
<li class="toctree-l2"><a class="reference internal" href="#other-features">Other features</a><ul>
<li class="toctree-l3"><a class="reference internal" href="async.html">Async support</a></li>
<li class="toctree-l3"><a class="reference internal" href="save-log.html">log the output</a></li>
<li class="toctree-l3"><a class="reference internal" href="batch-support.html">batch</a></li>
<li class="toctree-l3"><a class="reference external" href="https://github.com/alibaba/arthas/issues/11">how to use ognl</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="commands.html">Commands</a></li>
<li class="toctree-l1"><a class="reference internal" href="web-console.html">WebConsole</a></li>
<li class="toctree-l1"><a class="reference internal" href="docker.html">Docker</a></li>
<li class="toctree-l1"><a class="reference external" href="https://github.com/alibaba/arthas/issues?q=label%3Auser-case">User cases</a></li>
<li class="toctree-l1"><a class="reference external" href="https://github.com/alibaba/arthas/issues?q=label%3Aquestion-answered">Questions and answers</a></li>
<li class="toctree-l1"><a class="reference external" href="https://github.com/alibaba/arthas">Fork me at GitHub</a></li>
<li class="toctree-l1"><a class="reference external" href="https://github.com/alibaba/arthas/blob/master/CONTRIBUTING.md#">Compile and debug/CONTRIBUTING</a></li>
<li class="toctree-l1"><a class="reference external" href="https://github.com/alibaba/arthas/releases">Release Notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="contact-us.html">Contact us</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">Arthas</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html">Docs</a> &raquo;</li>
<li>Advanced Usage</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/alibaba/arthas/blob/master/site/src/site/sphinx/en/advanced-use.md" class="fa fa-github"> Edit on GitHub</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="advanced-usage">
<h1>Advanced Usage<a class="headerlink" href="#advanced-usage" title="Permalink to this headline"></a></h1>
<div class="section" id="basic">
<h2>Basic<a class="headerlink" href="#basic" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li><p>help - display Arthas help</p></li>
<li><p>cls - clear the screen</p></li>
<li><p><a class="reference internal" href="cat.html"><span class="doc">cat</span></a> - Concatenate and print files</p></li>
<li><p><a class="reference internal" href="echo.html"><span class="doc">echo</span></a> - write arguments to the standard output</p></li>
<li><p><a class="reference internal" href="grep.html"><span class="doc">grep</span></a> - Pattern searcher</p></li>
<li><p><a class="reference internal" href="tee.html"><span class="doc">tee</span></a> - Copies standard input to standard output, making a copy in zero or more files.</p></li>
<li><p><a class="reference internal" href="pwd.html"><span class="doc">pwd</span></a> - Return working directory name</p></li>
<li><p>session - display current session information</p></li>
<li><p><a class="reference internal" href="reset.html"><span class="doc">reset</span></a> - reset all the enhanced classes. All enhanced classes will also be reset when Arthas server is closed by <code class="docutils literal notranslate"><span class="pre">stop</span></code></p></li>
<li><p>version - print the version for the Arthas attached to the current Java process</p></li>
<li><p>history - view command history</p></li>
<li><p>quit/exit - exit the current Arthas session, without effecting other sessions</p></li>
<li><p>stop - terminate the Arthas server, all Arthas sessions will be destroyed</p></li>
<li><p><a class="reference internal" href="keymap.html"><span class="doc">keymap</span></a> - keymap for Arthas keyboard shortcut</p></li>
</ul>
</div>
<div class="section" id="jvm">
<h2>JVM<a class="headerlink" href="#jvm" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li><p><a class="reference internal" href="dashboard.html"><span class="doc">dashboard</span></a> - dashboard for the systems real-time data</p></li>
<li><p><a class="reference internal" href="thread.html"><span class="doc">thread</span></a> - show java thread information</p></li>
<li><p><a class="reference internal" href="jvm.html"><span class="doc">jvm</span></a> - show JVM information</p></li>
<li><p><a class="reference internal" href="sysprop.html"><span class="doc">sysprop</span></a> - view/modify system properties</p></li>
<li><p><a class="reference internal" href="sysenv.html"><span class="doc">sysenv</span></a> — view system environment variables</p></li>
<li><p><a class="reference internal" href="vmoption.html"><span class="doc">vmoption</span></a> - view/modify the vm diagnostic options.</p></li>
<li><p><a class="reference internal" href="perfcounter.html"><span class="doc">perfcounter</span></a> - show JVM Perf Counter information</p></li>
<li><p><a class="reference internal" href="logger.html"><span class="doc">logger</span></a> - print the logger information, update the logger level</p></li>
<li><p><a class="reference internal" href="getstatic.html"><span class="doc">getstatic</span></a> - examine classs static properties</p></li>
<li><p><a class="reference internal" href="ognl.html"><span class="doc">ognl</span></a> - execute ongl expression</p></li>
<li><p><a class="reference internal" href="mbean.html"><span class="doc">mbean</span></a> - show Mbean information</p></li>
<li><p><a class="reference internal" href="heapdump.html"><span class="doc">heapdump</span></a> - dump java heap in hprof binary format, like <code class="docutils literal notranslate"><span class="pre">jmap</span></code></p></li>
</ul>
</div>
<div class="section" id="class-classloader">
<h2>class/classloader<a class="headerlink" href="#class-classloader" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li><p><a class="reference internal" href="sc.html"><span class="doc">sc</span></a> - check the info for the classes loaded by JVM</p></li>
<li><p><a class="reference internal" href="sm.html"><span class="doc">sm</span></a> - check methods info for the loaded classes</p></li>
<li><p><a class="reference internal" href="jad.html"><span class="doc">jad</span></a> - decompile the specified loaded classes</p></li>
<li><p><a class="reference internal" href="mc.html"><span class="doc">mc</span></a> - Memory compiler, compiles <code class="docutils literal notranslate"><span class="pre">.java</span></code> files into <code class="docutils literal notranslate"><span class="pre">.class</span></code> files in memory</p></li>
<li><p><a class="reference internal" href="redefine.html"><span class="doc">redefine</span></a> - load external <code class="docutils literal notranslate"><span class="pre">*.class</span></code> files and re-define it into JVM</p></li>
<li><p><a class="reference internal" href="dump.html"><span class="doc">dump</span></a> - dump the loaded classes in byte code to the specified location</p></li>
<li><p><a class="reference internal" href="classloader.html"><span class="doc">classloader</span></a> - check the inheritance structure, urls, class loading info for the specified class; using classloader to get the url of the resource e.g. <code class="docutils literal notranslate"><span class="pre">java/lang/String.class</span></code></p></li>
</ul>
</div>
<div class="section" id="monitor-watch-trace-related">
<h2>monitor/watch/trace - related<a class="headerlink" href="#monitor-watch-trace-related" title="Permalink to this headline"></a></h2>
<blockquote>
<div><p><strong>Attention</strong>: commands here are taking advantage of byte-code-injection, which means we are injecting some <a class="reference external" href="https://en.wikipedia.org/wiki/Aspect-oriented_programming">aspects</a> into the current classes for monitoring and statistics purpose. Therefore, when using it for online troubleshooting in your production environment, youd better <strong>explicitly specify</strong> classes/methods/criteria, and remember to remove the injected code by <code class="docutils literal notranslate"><span class="pre">stop</span></code> or <code class="docutils literal notranslate"><span class="pre">reset</span></code>.</p>
</div></blockquote>
<ul class="simple">
<li><p><a class="reference internal" href="monitor.html"><span class="doc">monitor</span></a> - monitor method execution statistics</p></li>
<li><p><a class="reference internal" href="watch.html"><span class="doc">watch</span></a> - display the input/output parameter, return object, and thrown exception of specified method invocation</p></li>
<li><p><a class="reference internal" href="trace.html"><span class="doc">trace</span></a> - trace the execution time of specified method invocation</p></li>
<li><p><a class="reference internal" href="stack.html"><span class="doc">stack</span></a> - display the stack trace for the specified class and method</p></li>
<li><p><a class="reference internal" href="tt.html"><span class="doc">tt</span></a> - time tunnel, record the arguments and returned value for the methods and replay</p></li>
</ul>
</div>
<div class="section" id="options">
<h2>options<a class="headerlink" href="#options" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li><p><a class="reference internal" href="options.html"><span class="doc">options</span></a> - check/set Arthas global options</p></li>
</ul>
</div>
<div class="section" id="profiler-flame-graph">
<h2>profiler/flame graph<a class="headerlink" href="#profiler-flame-graph" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li><p><a class="reference internal" href="profiler.html"><span class="doc">profiler</span></a> - use <a class="reference external" href="https://github.com/jvm-profiling-tools/async-profiler">async-profiler</a> to generate flame graph</p></li>
</ul>
</div>
<div class="section" id="pipe">
<h2>pipe<a class="headerlink" href="#pipe" title="Permalink to this headline"></a></h2>
<p>Arthas provides <code class="docutils literal notranslate"><span class="pre">pipe</span></code> to process the result returned from commands further, e.g. <code class="docutils literal notranslate"><span class="pre">sm</span> <span class="pre">java.lang.String</span> <span class="pre">*</span> <span class="pre">|</span> <span class="pre">grep</span> <span class="pre">'index'</span></code>. Commands supported in <code class="docutils literal notranslate"><span class="pre">pipe</span></code>:</p>
<ul class="simple">
<li><p>grep - filter the result with the given keyword</p></li>
<li><p>plaintext - remove the ANSI color</p></li>
<li><p>wc - count lines</p></li>
</ul>
</div>
<div class="section" id="async-in-background">
<h2>async in background<a class="headerlink" href="#async-in-background" title="Permalink to this headline"></a></h2>
<p><a class="reference internal" href="async.html"><span class="doc">async</span></a> can be handy when a problem is hardly to reproduce in the production environment, e.g. one <code class="docutils literal notranslate"><span class="pre">watch</span></code> condition may happen only once in one single day.</p>
<ul class="simple">
<li><p>job control - use <code class="docutils literal notranslate"><span class="pre">&gt;</span></code> to redirect result into the log file, use <code class="docutils literal notranslate"><span class="pre">&amp;</span></code> to put the job to the background. Job keeps running even if the session is disconnected (the session lifecycle is 1 day by default)</p></li>
<li><p>jobs - list all jobs</p></li>
<li><p>kill - forcibly terminate the job</p></li>
<li><p>fg - bring the suspend job to the foreground</p></li>
<li><p>bg - put the job to run in the background</p></li>
</ul>
</div>
<div class="section" id="web-console">
<h2>Web Console<a class="headerlink" href="#web-console" title="Permalink to this headline"></a></h2>
<p>Arthas supports living inside a browser. The communication between arthas and browser is via websocket.</p>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="web-console.html">Web Console</a></li>
</ul>
</div>
</div>
<div class="section" id="start-as-a-java-agent">
<h2>Start as a Java Agent<a class="headerlink" href="#start-as-a-java-agent" title="Permalink to this headline"></a></h2>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="agent.html">Start as a Java Agent</a></li>
</ul>
</div>
</div>
<div class="section" id="user-data-report">
<h2>User data report<a class="headerlink" href="#user-data-report" title="Permalink to this headline"></a></h2>
<p>After the <code class="docutils literal notranslate"><span class="pre">3.1.4</span></code> version, arthas support user data report.</p>
<p>At startup, use the <code class="docutils literal notranslate"><span class="pre">stat-url</span></code> option, such as: <code class="docutils literal notranslate"><span class="pre">./as.sh</span> <span class="pre">--stat-url</span> <span class="pre">'http://192.168.10.11:8080/api/stat'</span></code></p>
<p>There is a sample data report in the tunnel server that users can implement on their own.</p>
<p><a class="reference external" href="https://github.com/alibaba/arthas/blob/master/tunnel-server/src/main/java/com/alibaba/arthas/tunnel/server/app/web/StatController.java">StatController.java</a></p>
</div>
<div class="section" id="other-features">
<h2>Other features<a class="headerlink" href="#other-features" title="Permalink to this headline"></a></h2>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="async.html">Async support</a></li>
<li class="toctree-l1"><a class="reference internal" href="save-log.html">log the output</a></li>
<li class="toctree-l1"><a class="reference internal" href="batch-support.html">batch</a></li>
<li class="toctree-l1"><a class="reference external" href="https://github.com/alibaba/arthas/issues/11">how to use ognl</a></li>
</ul>
</div>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="web-console.html" class="btn btn-neutral float-right" title="Web Console" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="quick-start.html" class="btn btn-neutral float-left" title="Quick Start" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2018-2020, Alibaba Middleware Group, and contributors
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
<div class="github-fork-ribbon-wrapper right">
<div class="github-fork-ribbon">
<a href="https://github.com/alibaba/arthas" target="_blank">Fork me at GitHub</a>
</div>
</div>
<script type="text/javascript" src="_static/add_badges.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/highlight.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlightjs-line-numbers.js/2.5.0/highlightjs-line-numbers.min.js"></script>
<script>
document.querySelectorAll('div.hljs > pre').forEach(function(block) {
hljs.highlightBlock(block);
hljs.lineNumbersBlock(block);
});
</script>
<script>
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
if (window.location.hostname == "arthas.gitee.io") {
hm.src = "https://hm.baidu.com/hm.js?ecc1b0d9aeb73da1671876133211d4d3";
} else { // https://alibaba.github.io/arthas/
hm.src = "https://hm.baidu.com/hm.js?d5c5e25b100f0eb51a4c35c8a86ea9b4";
}
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
</body>
</html>