update doc

pull/483/head
hengyunabc 6 years ago
parent 5b8ade6f24
commit 494e4f6fe5

@ -17,6 +17,7 @@ classloader
|[a]|列出所有ClassLoader加载的类请谨慎使用|
|`[c:]`|ClassLoader的hashcode|
|`[c: r:]`|用ClassLoader去查找resource|
### 使用参考
* 按类加载类型查看统计信息
@ -128,4 +129,4 @@ $ classloader -c 226b143b -r META-INF/MANIFEST.MF
```shell
$ classloader -c 1b6d3586 -r java/lang/String.class
jar:file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/rt.jar!/java/lang/String.class
```
```

@ -25,10 +25,10 @@ curl -L https://alibaba.github.io/arthas/install.sh | sh
在`Download`栏下载最新的 `bin.zip` 包解压后在bin目录有 `as.bat`。此脚本暂时只接受一个参数 pid即只能诊断本机上的 Java 进程。欢迎精通bat脚本的开发者改进
```
as.bat pid
as.bat <pid>
```
如果需要更好的体验,可以在本地使用 `as.bat pid` 启动 Arthas Server 后,然后在另外的 Linux/Mac 上使用 `as.sh pid@ip:port` 来远程诊断。
如果需要更好的体验,可以在本地使用 `as.bat <pid>` 启动 Arthas Server 后,然后在另外的 Linux/Mac 上使用 `as.sh pid@ip:port` 来远程诊断。
> Windows用户如果在cmd里不能正常显示颜色可以使用[conemu](https://sourceforge.net/projects/conemu)。

@ -70,9 +70,9 @@ $ jvm
PS Old Gen
MEMORY HEAP-MEMORY-USAGE 186646528/134217728/1908932608/31245568
MEMORY HEAP-MEMORY-USAGE 1073741824(1.00 GiB)/1073741824(1.00 GiB)/5242880000(4.88 GiB)/278637584(265.73 MiB)
[committed/init/max/used]
NO-HEAP-MEMORY-USAGE 35520512/2555904/-1/34584616
NO-HEAP-MEMORY-USAGE 172597248(164.60 MiB)/2555904(2.44 MiB)/1862270976(1.73 GiB)/166521144(158.81 MiB)
[committed/init/max/used]
PENDING-FINALIZE-COUNT 0
@ -84,8 +84,10 @@ $ jvm
THREAD COUNT 16
DAEMON-COUNT 10
LIVE-COUNT 18
PEAK-COUNT 18
STARTED-COUNT 19
DEADLOCK-COUNT 0
Affect cost in 2 ms.
```

@ -1,11 +1,15 @@
monitor
===
=======
> 方法执行监控
对匹配 `class-pattern``method-pattern`的类、方法的调用进行监控。
`monitor` 命令是一个非实时返回命令,实时返回命令是输入之后立即返回,而非实时返回的命令,则是不断的等待目标 Java 进程返回信息,直到用户输入 `Ctrl+C` 为止。服务端是以任务的形式在后台跑任务,植入的代码随着任务的中止而被不会被执行,所以任务关闭后,不会对原有性能产生太大影响,而且原则上,任何 Arthas 的命令也不会引起任何原有业务逻辑的改变。
`monitor` 命令是一个非实时返回命令.
实时返回命令是输入之后立即返回,而非实时返回的命令,则是不断的等待目标 Java 进程返回信息,直到用户输入 `Ctrl+C` 为止。
服务端是以任务的形式在后台跑任务植入的代码随着任务的中止而不会被执行所以任务关闭后不会对原有性能产生太大影响而且原则上任何Arthas命令不会引起原有业务逻辑的改变。
### 监控的维度说明
@ -22,7 +26,7 @@ monitor
### 参数说明
方法拥有一个命名参数 `[c:]`意思是统计周期cycle of output拥有一个整的参数值
方法拥有一个命名参数 `[c:]`意思是统计周期cycle of output拥有一个整的参数值
|参数名称|参数说明|
|---:|:---|
@ -48,4 +52,4 @@ Affect(class-cnt:1 , method-cnt:1) cost in 36 ms.
timestamp class method total success fail rt fail-rate
-----------------------------------------------------------------------------------------------------------------------------------
2015-12-17 10:56:50 com.alibaba.sample.petstore.web.store.module.screen.ItemList execute 0 0 0 0.00 0.00%
```
```

@ -1,9 +1,11 @@
启动 Arthas
-
=====
## 交互模式启动
> ./as.sh
```bash
./as.sh
```
```sh
➜ bin git:(develop) ✗ ./as.sh
@ -24,14 +26,16 @@ $
启动脚本如下:
> ./as.sh \<PID\>[@IP:PORT]
```bash
./as.sh <PID>[@IP:PORT]
```
### 参数说明
* PID目标 Java 进程 ID请确保执行当前执行命令的用户必须有足够的权限操作对应的 Java 进程)
* IP目标服务器 IP 地址,当 Arthas Server 启动后,其他人可以通过指定 IP 的形式加载到对应目标机器的 Java 进程中从而实现远程协助。Arthas 允许多个用户同时访问,并且各自的命令不会相互干扰执行
* IPArthas Server 侦听的地址,默认值是 `127.00.1`。Arthas允许多个用户同时访问,并且各自的命令不会相互干扰执行
* PORT目标服务器 Arthas Server 的端口号,默认的端口号是 3658
### 示例
@ -46,27 +50,25 @@ $
### 远程诊断
服务器启动 Arthas Server 后,其他人可以使用 Arthas Console Client 远程连接上去进程诊断,请参考
服务器启动 Arthas Server 后,其他人可以使用 telnet 远程连接上去进程诊断,例如
> ./as.sh PID@RemoteIP:RemotePort
其中 PID 为远程服务器上的 Java 进程 IDRemoteIP 为远程服务器的 IP 地址RemotePort 为远程服务器上 Arthas Server 的端口,默认为 3658。
```bash
telnet 192.168.1.119 3658
```
### sudo 支持
成熟的线上管理环境一般都不会直接开放 JVM 部署用户权限给你,而是通过 sudo-list 来控制和监控用户的越权操作。由于 as.sh 脚本中会对当前用户的环境变量产生感知,所以需要加上 -H 参数
> sudo -u admin -H ./as.sh 12345
### telnet 的支持
Arthas 支持通过 telnet 来访问服务端,如果当你手头的机器没有安装 Arthas Console Client你可以简单的通过 telnet 命令来进行访问。
```bash
sudo -u admin -H ./as.sh 12345
```
> telnet 10.232.12.113 3658
当然了telnet 命令没有 `Tab` 自动补全,各种操作体验也不如 Arthas Client Console。
### Windows 环境支持
* 目前 Arthas 提供了 `as.bat` 脚本,用于 Windows 环境下的诊断场景;此脚本暂时只接受一个参数 pid即只能诊断本机上的 Java 进程;
* 另外,`as.bat` 脚本在体验方面还有一些问题,如果需要更好的体验,可以在本地使用 `as.bat pid` 启动 Arthas Server 后,然后在另外的 Linux/Mac 上使用 as.bat pid@ip:port 来远程诊断;
目前`as.bat`脚本只支持一个参数pid
```bash
as.bat <pid>
```

@ -105,6 +105,7 @@
<li class="toctree-l2"><a class="reference internal" href="jad.html">jad</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">classloader</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#">参数说明</a></li>
<li class="toctree-l3"><a class="reference internal" href="#">使用参考</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="redefine.html">redefine</a></li>
@ -226,12 +227,11 @@
<td align="right"><code>[c: r:]</code></td>
<td align="left">用ClassLoader去查找resource</td>
</tr>
<tr>
<td align="right">### 使用参考</td>
<td align="left"></td>
</tr>
</tbody>
</table><ul class="simple">
</table></div>
<div class="section" id="">
<span id="id2"></span><h2>使用参考<a class="headerlink" href="#" title="永久链接至标题"></a></h2>
<ul class="simple">
<li>按类加载类型查看统计信息</li>
</ul>
<div class="highlight-s notranslate"><div class="highlight"><pre><span></span><span class="o">$</span> classloader

@ -189,10 +189,10 @@
<span id="windows"></span><h2>Windows<a class="headerlink" href="#windows" title="永久链接至标题"></a></h2>
<p>最新版本:<a class="reference external" href="http://search.maven.org/classic/#search%7Cga%7C1%7Cg%3A%22com.taobao.arthas%22%20AND%20a%3A%22arthas-packaging%22"><img alt="Arthas" src="https://img.shields.io/maven-central/v/com.taobao.arthas/arthas-packaging.svg?style=flat-square" /></a></p>
<p><code class="docutils literal notranslate"><span class="pre">Download</span></code>栏下载最新的 <code class="docutils literal notranslate"><span class="pre">bin.zip</span></code>解压后在bin目录有 <code class="docutils literal notranslate"><span class="pre">as.bat</span></code>。此脚本暂时只接受一个参数 pid即只能诊断本机上的 Java 进程。欢迎精通bat脚本的开发者改进</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">as</span><span class="o">.</span><span class="n">bat</span> <span class="n">pid</span>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">as</span><span class="o">.</span><span class="n">bat</span> <span class="o">&lt;</span><span class="n">pid</span><span class="o">&gt;</span>
</pre></div>
</div>
<p>如果需要更好的体验,可以在本地使用 <code class="docutils literal notranslate"><span class="pre">as.bat</span> <span class="pre">pid</span></code> 启动 Arthas Server 后,然后在另外的 Linux/Mac 上使用 <code class="docutils literal notranslate"><span class="pre">as.sh</span> <span class="pre">pid&#64;ip:port</span></code> 来远程诊断。</p>
<p>如果需要更好的体验,可以在本地使用 <code class="docutils literal notranslate"><span class="pre">as.bat</span> <span class="pre">&lt;pid&gt;</span></code> 启动 Arthas Server 后,然后在另外的 Linux/Mac 上使用 <code class="docutils literal notranslate"><span class="pre">as.sh</span> <span class="pre">pid&#64;ip:port</span></code> 来远程诊断。</p>
<blockquote>
<div>Windows用户如果在cmd里不能正常显示颜色可以使用<a class="reference external" href="https://sourceforge.net/projects/conemu">conemu</a></div></blockquote>
</div>

@ -260,9 +260,9 @@
PS Survivor Space
PS Old Gen
MEMORY HEAP-MEMORY-USAGE 186646528/134217728/1908932608/31245568
MEMORY HEAP-MEMORY-USAGE 1073741824(1.00 GiB)/1073741824(1.00 GiB)/5242880000(4.88 GiB)/278637584(265.73 MiB)
[committed/init/max/used]
NO-HEAP-MEMORY-USAGE 35520512/2555904/-1/34584616
NO-HEAP-MEMORY-USAGE 172597248(164.60 MiB)/2555904(2.44 MiB)/1862270976(1.73 GiB)/166521144(158.81 MiB)
[committed/init/max/used]
PENDING-FINALIZE-COUNT 0
@ -274,8 +274,10 @@
THREAD COUNT 16
DAEMON-COUNT 10
LIVE-COUNT 18
PEAK-COUNT 18
STARTED-COUNT 19
DEADLOCK-COUNT 0
Affect cost in 2 ms.
</pre></div>
</div>

@ -197,7 +197,9 @@
<blockquote>
<div>方法执行监控</div></blockquote>
<p>对匹配 <code class="docutils literal notranslate"><span class="pre">class-pattern</span></code><code class="docutils literal notranslate"><span class="pre">method-pattern</span></code>的类、方法的调用进行监控。</p>
<p><code class="docutils literal notranslate"><span class="pre">monitor</span></code> 命令是一个非实时返回命令,实时返回命令是输入之后立即返回,而非实时返回的命令,则是不断的等待目标 Java 进程返回信息,直到用户输入 <code class="docutils literal notranslate"><span class="pre">Ctrl+C</span></code> 为止。服务端是以任务的形式在后台跑任务,植入的代码随着任务的中止而被不会被执行,所以任务关闭后,不会对原有性能产生太大影响,而且原则上,任何 Arthas 的命令也不会引起任何原有业务逻辑的改变。</p>
<p><code class="docutils literal notranslate"><span class="pre">monitor</span></code> 命令是一个非实时返回命令.</p>
<p>实时返回命令是输入之后立即返回,而非实时返回的命令,则是不断的等待目标 Java 进程返回信息,直到用户输入 <code class="docutils literal notranslate"><span class="pre">Ctrl+C</span></code> 为止。</p>
<p>服务端是以任务的形式在后台跑任务植入的代码随着任务的中止而不会被执行所以任务关闭后不会对原有性能产生太大影响而且原则上任何Arthas命令不会引起原有业务逻辑的改变。</p>
<div class="section" id="">
<span id="id1"></span><h2>监控的维度说明<a class="headerlink" href="#" title="永久链接至标题"></a></h2>
<table border="1" class="docutils">
@ -244,7 +246,7 @@
</table></div>
<div class="section" id="">
<span id="id2"></span><h2>参数说明<a class="headerlink" href="#" title="永久链接至标题"></a></h2>
<p>方法拥有一个命名参数 <code class="docutils literal notranslate"><span class="pre">[c:]</span></code>意思是统计周期cycle of output拥有一个整的参数值</p>
<p>方法拥有一个命名参数 <code class="docutils literal notranslate"><span class="pre">[c:]</span></code>意思是统计周期cycle of output拥有一个整的参数值</p>
<table border="1" class="docutils">
<thead>
<tr>

File diff suppressed because one or more lines are too long

@ -165,11 +165,11 @@
<div class="section" id="arthas">
<span id="arthas"></span><h1>启动 Arthas<a class="headerlink" href="#arthas" title="永久链接至标题"></a></h1>
</div>
<div class="section" id="">
<span id="id1"></span><h1>交互模式启动<a class="headerlink" href="#" title="永久链接至标题"></a></h1>
<blockquote>
<div>./as.sh</div></blockquote>
<span id="id1"></span><h2>交互模式启动<a class="headerlink" href="#" title="永久链接至标题"></a></h2>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>./as.sh
</pre></div>
</div>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>➜ bin git:<span class="o">(</span>develop<span class="o">)</span> ✗ ./as.sh
Found existing java process, please choose one and hit RETURN.
<span class="o">[</span><span class="m">1</span><span class="o">]</span>: <span class="m">3088</span> org.jetbrains.idea.maven.server.RemoteMavenServer
@ -186,20 +186,21 @@ $
</div>
</div>
<div class="section" id="">
<span id="id2"></span><h1>非交互模式启动<a class="headerlink" href="#" title="永久链接至标题"></a></h1>
<span id="id2"></span><h2>非交互模式启动<a class="headerlink" href="#" title="永久链接至标题"></a></h2>
<p>启动脚本如下:</p>
<blockquote>
<div>./as.sh &lt;PID&gt;[&#64;IP:PORT]</div></blockquote>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>./as.sh &lt;PID&gt;<span class="o">[</span>@IP:PORT<span class="o">]</span>
</pre></div>
</div>
<div class="section" id="">
<span id="id3"></span><h2>参数说明<a class="headerlink" href="#" title="永久链接至标题"></a></h2>
<span id="id3"></span><h3>参数说明<a class="headerlink" href="#" title="永久链接至标题"></a></h3>
<ul class="simple">
<li>PID目标 Java 进程 ID请确保执行当前执行命令的用户必须有足够的权限操作对应的 Java 进程)</li>
<li>IP目标服务器 IP 地址,当 Arthas Server 启动后,其他人可以通过指定 IP 的形式加载到对应目标机器的 Java 进程中从而实现远程协助。Arthas 允许多个用户同时访问,并且各自的命令不会相互干扰执行</li>
<li>IPArthas Server 侦听的地址,默认值是 <code class="docutils literal notranslate"><span class="pre">127.00.1</span></code>。Arthas允许多个用户同时访问,并且各自的命令不会相互干扰执行</li>
<li>PORT目标服务器 Arthas Server 的端口号,默认的端口号是 3658</li>
</ul>
</div>
<div class="section" id="">
<span id="id4"></span><h2>示例<a class="headerlink" href="#" title="永久链接至标题"></a></h2>
<span id="id4"></span><h3>示例<a class="headerlink" href="#" title="永久链接至标题"></a></h3>
<ul>
<li><p class="first">如果不指定 IP 和 PORT默认是 127.0.0.1 和 3658</p>
<blockquote>
@ -213,33 +214,26 @@ $
</ul>
</div>
<div class="section" id="">
<span id="id5"></span><h2>远程诊断<a class="headerlink" href="#" title="永久链接至标题"></a></h2>
<p>服务器启动 Arthas Server 后,其他人可以使用 Arthas Console Client 远程连接上去进程诊断,请参考</p>
<blockquote>
<div>./as.sh PID&#64;RemoteIP:RemotePort</div></blockquote>
<p>其中 PID 为远程服务器上的 Java 进程 IDRemoteIP 为远程服务器的 IP 地址RemotePort 为远程服务器上 Arthas Server 的端口,默认为 3658。</p>
<span id="id5"></span><h3>远程诊断<a class="headerlink" href="#" title="永久链接至标题"></a></h3>
<p>服务器启动 Arthas Server 后,其他人可以使用 telnet 远程连接上去进程诊断,例如</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>telnet <span class="m">192</span>.168.1.119 <span class="m">3658</span>
</pre></div>
</div>
</div>
<div class="section" id="sudo">
<span id="sudo"></span><h2>sudo 支持<a class="headerlink" href="#sudo" title="永久链接至标题"></a></h2>
<span id="sudo"></span><h3>sudo 支持<a class="headerlink" href="#sudo" title="永久链接至标题"></a></h3>
<p>成熟的线上管理环境一般都不会直接开放 JVM 部署用户权限给你,而是通过 sudo-list 来控制和监控用户的越权操作。由于 as.sh 脚本中会对当前用户的环境变量产生感知,所以需要加上 -H 参数</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&gt;</span> <span class="n">sudo</span> <span class="o">-</span><span class="n">u</span> <span class="n">admin</span> <span class="o">-</span><span class="n">H</span> <span class="o">./</span><span class="k">as</span><span class="o">.</span><span class="n">sh</span> <span class="mi">12345</span>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>sudo -u admin -H ./as.sh <span class="m">12345</span>
</pre></div>
</div>
</div>
<div class="section" id="telnet">
<span id="telnet"></span><h2>telnet 的支持<a class="headerlink" href="#telnet" title="永久链接至标题"></a></h2>
<p>Arthas 支持通过 telnet 来访问服务端,如果当你手头的机器没有安装 Arthas Console Client你可以简单的通过 telnet 命令来进行访问。</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&gt;</span> <span class="n">telnet</span> <span class="mf">10.232</span><span class="o">.</span><span class="mf">12.113</span> <span class="mi">3658</span>
<div class="section" id="windows">
<span id="windows"></span><h3>Windows 环境支持<a class="headerlink" href="#windows" title="永久链接至标题"></a></h3>
<p>目前<code class="docutils literal notranslate"><span class="pre">as.bat</span></code>脚本只支持一个参数pid</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>as.bat &lt;pid&gt;
</pre></div>
</div>
<p>当然了telnet 命令没有 <code class="docutils literal notranslate"><span class="pre">Tab</span></code> 自动补全,各种操作体验也不如 Arthas Client Console。</p>
</div>
<div class="section" id="windows">
<span id="windows"></span><h2>Windows 环境支持<a class="headerlink" href="#windows" title="永久链接至标题"></a></h2>
<ul class="simple">
<li>目前 Arthas 提供了 <code class="docutils literal notranslate"><span class="pre">as.bat</span></code> 脚本,用于 Windows 环境下的诊断场景;此脚本暂时只接受一个参数 pid即只能诊断本机上的 Java 进程;</li>
<li>另外,<code class="docutils literal notranslate"><span class="pre">as.bat</span></code> 脚本在体验方面还有一些问题,如果需要更好的体验,可以在本地使用 <code class="docutils literal notranslate"><span class="pre">as.bat</span> <span class="pre">pid</span></code> 启动 Arthas Server 后,然后在另外的 Linux/Mac 上使用 as.bat pid&#64;ip:port 来远程诊断;</li>
</ul>
</div>
</div>

Loading…
Cancel
Save