mirror of https://github.com/alibaba/arthas.git
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.
54 lines
17 KiB
JavaScript
54 lines
17 KiB
JavaScript
3 years ago
|
import{_ as r,a as t}from"./arthas-output-svg.a3bef681.js";import{_ as l,o as d,c,a as e,b as i,e as s,d as n,r as o}from"./app.391b0e4e.js";const u={},p=e("h1",{id:"profiler",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#profiler","aria-hidden":"true"},"#"),s(" profiler")],-1),h={href:"https://arthas.aliyun.com/doc/arthas-tutorials.html?language=cn&id=command-profiler",target:"_blank",rel:"noopener noreferrer"},m=e("code",null,"profiler",-1),v=s("\u5728\u7EBF\u6559\u7A0B"),b={class:"custom-container tip"},f=e("p",{class:"custom-container-title"},"\u63D0\u793A",-1),g=s("\u4F7F\u7528"),_={href:"https://github.com/jvm-profiling-tools/async-profiler",target:"_blank",rel:"noopener noreferrer"},x=s("async-profiler"),k=s("\u751F\u6210\u706B\u7130\u56FE"),y=n(`<p><code>profiler</code> \u547D\u4EE4\u652F\u6301\u751F\u6210\u5E94\u7528\u70ED\u70B9\u7684\u706B\u7130\u56FE\u3002\u672C\u8D28\u4E0A\u662F\u901A\u8FC7\u4E0D\u65AD\u7684\u91C7\u6837\uFF0C\u7136\u540E\u628A\u6536\u96C6\u5230\u7684\u91C7\u6837\u7ED3\u679C\u751F\u6210\u706B\u7130\u56FE\u3002</p><p><code>profiler</code> \u547D\u4EE4\u57FA\u672C\u8FD0\u884C\u7ED3\u6784\u662F <code>profiler action [actionArg]</code></p><h3 id="\u53C2\u6570\u8BF4\u660E" tabindex="-1"><a class="header-anchor" href="#\u53C2\u6570\u8BF4\u660E" aria-hidden="true">#</a> \u53C2\u6570\u8BF4\u660E</h3><table><thead><tr><th style="text-align:right;">\u53C2\u6570\u540D\u79F0</th><th style="text-align:left;">\u53C2\u6570\u8BF4\u660E</th></tr></thead><tbody><tr><td style="text-align:right;"><em>action</em></td><td style="text-align:left;">\u8981\u6267\u884C\u7684\u64CD\u4F5C</td></tr><tr><td style="text-align:right;"><em>actionArg</em></td><td style="text-align:left;">\u5C5E\u6027\u540D\u6A21\u5F0F</td></tr><tr><td style="text-align:right;">[i:]</td><td style="text-align:left;">\u91C7\u6837\u95F4\u9694\uFF08\u5355\u4F4D\uFF1Ans\uFF09\uFF08\u9ED8\u8BA4\u503C\uFF1A10'000'000\uFF0C\u5373 10 ms\uFF09</td></tr><tr><td style="text-align:right;">[f:]</td><td style="text-align:left;">\u5C06\u8F93\u51FA\u8F6C\u50A8\u5230\u6307\u5B9A\u8DEF\u5F84</td></tr><tr><td style="text-align:right;">[d:]</td><td style="text-align:left;">\u8FD0\u884C\u8BC4\u6D4B\u6307\u5B9A\u79D2</td></tr><tr><td style="text-align:right;">[e:]</td><td style="text-align:left;">\u8981\u8DDF\u8E2A\u54EA\u4E2A\u4E8B\u4EF6\uFF08cpu, alloc, lock, cache-misses \u7B49\uFF09\uFF0C\u9ED8\u8BA4\u662F cpu</td></tr></tbody></table><h3 id="\u542F\u52A8-profiler" tabindex="-1"><a class="header-anchor" href="#\u542F\u52A8-profiler" aria-hidden="true">#</a> \u542F\u52A8 profiler</h3><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>$ profiler start
|
||
3 years ago
|
Started [cpu] profiling
|
||
|
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div><div class="custom-container tip"><p class="custom-container-title">\u63D0\u793A</p><p>\u9ED8\u8BA4\u60C5\u51B5\u4E0B\uFF0C\u751F\u6210\u7684\u662F cpu \u7684\u706B\u7130\u56FE\uFF0C\u5373 event \u4E3A<code>cpu</code>\u3002\u53EF\u4EE5\u7528<code>--event</code>\u53C2\u6570\u6765\u6307\u5B9A\u3002</p></div><h3 id="\u83B7\u53D6\u5DF2\u91C7\u96C6\u7684-sample-\u7684\u6570\u91CF" tabindex="-1"><a class="header-anchor" href="#\u83B7\u53D6\u5DF2\u91C7\u96C6\u7684-sample-\u7684\u6570\u91CF" aria-hidden="true">#</a> \u83B7\u53D6\u5DF2\u91C7\u96C6\u7684 sample \u7684\u6570\u91CF</h3><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>$ profiler getSamples
|
||
|
23
|
||
|
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="\u67E5\u770B-profiler-\u72B6\u6001" tabindex="-1"><a class="header-anchor" href="#\u67E5\u770B-profiler-\u72B6\u6001" aria-hidden="true">#</a> \u67E5\u770B profiler \u72B6\u6001</h3><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ profiler status
|
||
|
<span class="token punctuation">[</span>cpu<span class="token punctuation">]</span> profiling is running <span class="token keyword">for</span> <span class="token number">4</span> seconds
|
||
|
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div><p>\u53EF\u4EE5\u67E5\u770B\u5F53\u524D profiler \u5728\u91C7\u6837\u54EA\u79CD<code>event</code>\u548C\u91C7\u6837\u65F6\u95F4\u3002</p><h3 id="\u505C\u6B62-profiler" tabindex="-1"><a class="header-anchor" href="#\u505C\u6B62-profiler" aria-hidden="true">#</a> \u505C\u6B62 profiler</h3><h4 id="\u751F\u6210-html-\u683C\u5F0F\u7ED3\u679C" tabindex="-1"><a class="header-anchor" href="#\u751F\u6210-html-\u683C\u5F0F\u7ED3\u679C" aria-hidden="true">#</a> \u751F\u6210 html \u683C\u5F0F\u7ED3\u679C</h4><p>\u9ED8\u8BA4\u60C5\u51B5\u4E0B\uFF0C\u7ED3\u679C\u6587\u4EF6\u662F<code>html</code>\u683C\u5F0F\uFF0C\u4E5F\u53EF\u4EE5\u7528<code>--format</code>\u53C2\u6570\u6307\u5B9A\uFF1A</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ profiler stop --format html
|
||
|
profiler output file: /tmp/test/arthas-output/20211207-111550.html
|
||
|
OK
|
||
|
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>\u6216\u8005\u5728<code>--file</code>\u53C2\u6570\u91CC\u7528\u6587\u4EF6\u540D\u6307\u540D\u683C\u5F0F\u3002\u6BD4\u5982<code>--file /tmp/result.html</code> \u3002</p><h3 id="\u901A\u8FC7\u6D4F\u89C8\u5668\u67E5\u770B-arthas-output-\u4E0B\u9762\u7684-profiler-\u7ED3\u679C" tabindex="-1"><a class="header-anchor" href="#\u901A\u8FC7\u6D4F\u89C8\u5668\u67E5\u770B-arthas-output-\u4E0B\u9762\u7684-profiler-\u7ED3\u679C" aria-hidden="true">#</a> \u901A\u8FC7\u6D4F\u89C8\u5668\u67E5\u770B arthas-output \u4E0B\u9762\u7684 profiler \u7ED3\u679C</h3>`,18),j=s("\u9ED8\u8BA4\u60C5\u51B5\u4E0B\uFF0Carthas \u4F7F\u7528 3658 \u7AEF\u53E3\uFF0C\u5219\u53EF\u4EE5\u6253\u5F00\uFF1A "),S={href:"http://localhost:3658/arthas-output/",target:"_blank",rel:"noopener noreferrer"},$=s("http://localhost:3658/arthas-output/"),w=s(" \u67E5\u770B\u5230"),L=e("code",null,"arthas-output",-1),q=s("\u76EE\u5F55\u4E0B\u9762\u7684 profiler \u7ED3\u679C\uFF1A"),B=n('<p><img src="'+r+'" alt=""></p><p>\u70B9\u51FB\u53EF\u4EE5\u67E5\u770B\u5177\u4F53\u7684\u7ED3\u679C\uFF1A</p><p><img src="'+t+`" alt=""></p><div class="custom-container tip"><p class="custom-container-title">\u63D0\u793A</p><p>\u5982\u679C\u662F chrome \u6D4F\u89C8\u5668\uFF0C\u53EF\u80FD\u9700\u8981\u591A\u6B21\u5237\u65B0\u3002</p></div><h3 id="profiler-\u652F\u6301\u7684-events" tabindex="-1"><a class="header-anchor" href="#profiler-\u652F\u6301\u7684-events" aria-hidden="true">#</a> profiler \u652F\u6301\u7684 events</h3><p>\u5728\u4E0D\u540C\u7684\u5E73\u53F0\uFF0C\u4E0D\u540C\u7684 OS \u4E0B\u9762\uFF0C\u652F\u6301\u7684 events \u5404\u6709\u4E0D\u540C\u3002\u6BD4\u5982\u5728 macos \u4E0B\u9762\uFF1A</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ profiler list
|
||
|
Basic events:
|
||
|
cpu
|
||
|
alloc
|
||
|
lock
|
||
|
wall
|
||
|
itimer
|
||
|
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>\u5728 linux \u4E0B\u9762</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ profiler list
|
||
|
Basic events:
|
||
|
cpu
|
||
|
alloc
|
||
|
lock
|
||
|
wall
|
||
|
itimer
|
||
|
Perf events:
|
||
|
page-faults
|
||
|
context-switches
|
||
|
cycles
|
||
|
instructions
|
||
|
cache-references
|
||
|
cache-misses
|
||
|
branches
|
||
|
branch-misses
|
||
|
bus-cycles
|
||
|
L1-dcache-load-misses
|
||
|
LLC-load-misses
|
||
|
dTLB-load-misses
|
||
|
mem:breakpoint
|
||
|
trace:tracepoint
|
||
|
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div>`,9),A=s("\u5982\u679C\u9047\u5230 OS \u672C\u8EAB\u7684\u6743\u9650/\u914D\u7F6E\u95EE\u9898\uFF0C\u7136\u540E \b \u7F3A\u5C11\u90E8\u5206 event\uFF0C\u53EF\u4EE5\u53C2\u8003"),C=e("code",null,"async-profiler",-1),N=s("\u672C\u8EAB\u6587\u6863\uFF1A"),V={href:"https://github.com/jvm-profiling-tools/async-profiler",target:"_blank",rel:"noopener noreferrer"},E=s("async-profiler"),I=n(`<p>\u53EF\u4EE5\u7528<code>--event</code>\u53C2\u6570\u6307\u5B9A\u8981\u91C7\u6837\u7684\u4E8B\u4EF6\uFF0C\u6BD4\u5982\u5BF9<code>alloc</code>\u4E8B\u4EF6\u8FDB\u5165\u91C7\u6837\uFF1A</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ profiler start --event alloc
|
||
|
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="\u6062\u590D\u91C7\u6837" tabindex="-1"><a class="header-anchor" href="#\u6062\u590D\u91C7\u6837" aria-hidden="true">#</a> \u6062\u590D\u91C7\u6837</h3><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ profiler resume
|
||
|
Started <span class="token punctuation">[</span>cpu<span class="token punctuation">]</span> profiling
|
||
|
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div><p><code>start</code>\u548C<code>resume</code>\u7684\u533A\u522B\u662F\uFF1A<code>start</code>\u662F\u65B0\u5F00\u59CB\u91C7\u6837\uFF0C<code>resume</code>\u4F1A\u4FDD\u7559\u4E0A\u6B21<code>stop</code>\u65F6\u7684\u6570\u636E\u3002</p><p>\u901A\u8FC7\u6267\u884C<code>profiler getSamples</code>\u53EF\u4EE5\u67E5\u770B samples \u7684\u6570\u91CF\u6765\u9A8C\u8BC1\u3002</p><h3 id="\u4F7F\u7528execute\u6765\u6267\u884C\u590D\u6742\u7684\u547D\u4EE4" tabindex="-1"><a class="header-anchor" href="#\u4F7F\u7528execute\u6765\u6267\u884C\u590D\u6742\u7684\u547D\u4EE4" aria-hidden="true">#</a> \u4F7F\u7528<code>execute</code>\u6765\u6267\u884C\u590D\u6742\u7684\u547D\u4EE4</h3><p>\u6BD4\u5982\u5F00\u59CB\u91C7\u6837\uFF1A</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>profiler execute <span class="token string">'start,framebuf=5000000'</span>
|
||
|
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>\u505C\u6B62\u91C7\u6837\uFF0C\u5E76\u4FDD\u5B58\u5230\u6307\u5B9A\u6587\u4EF6\u91CC\uFF1A</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>profiler execute <span class="token string">'stop,file=/tmp/result.html'</span>
|
||
|
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div>`,11),O=s("\u5177\u4F53\u7684\u683C\u5F0F\u53C2\u8003\uFF1A "),P={href:"https://github.com/jvm-profiling-tools/async-profiler/blob/v2.5/src/arguments.cpp#L50",target:"_blank",rel:"noopener noreferrer"},T=s("arguments.cpp"),D=n(`<h3 id="\u67E5\u770B\u6240\u6709\u652F\u6301\u7684-action" tabindex="-1"><a class="header-anchor" href="#\u67E5\u770B\u6240\u6709\u652F\u6301\u7684-action" aria-hidden="true">#</a> \u67E5\u770B\u6240\u6709\u652F\u6301\u7684 action</h3><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ profiler actions
|
||
|
Supported Actions: <span class="token punctuation">[</span>resume, dumpCollapsed, getSamples, start, list, execute, version, stop, load, dumpFlat, actions, dumpTraces, status<span class="token punctuation">]</span>
|
||
|
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="\u67E5\u770B\u7248\u672C" tabindex="-1"><a class="header-anchor" href="#\u67E5\u770B\u7248\u672C" aria-hidden="true">#</a> \u67E5\u770B\u7248\u672C</h3><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ profiler version
|
||
|
Async-profiler <span class="token number">1.6</span> built on Sep <span class="token number">9</span> <span class="token number">2019</span>
|
||
|
Copyright <span class="token number">2019</span> Andrei Pangin
|
||
|
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="\u914D\u7F6E-framebuf-\u53C2\u6570" tabindex="-1"><a class="header-anchor" href="#\u914D\u7F6E-framebuf-\u53C2\u6570" aria-hidden="true">#</a> \u914D\u7F6E framebuf \u53C2\u6570</h3><blockquote><p>\u5982\u679C\u9047\u5230\u751F\u6210\u7684\u706B\u7130\u56FE\u6709 <code>[frame_buffer_overflow]</code>\uFF0C\u5219\u9700\u8981\u589E\u5927 framebuf\uFF08\u9ED8\u8BA4\u503C\u662F 1'000'000\uFF09\uFF0C\u53EF\u4EE5\u663E\u5F0F\u914D\u7F6E\uFF0C\u6BD4\u5982\uFF1A</p></blockquote><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>profiler start --framebuf <span class="token number">5000000</span>
|
||
|
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="\u914D\u7F6E-include-exclude-\u6765\u8FC7\u6EE4\u6570\u636E" tabindex="-1"><a class="header-anchor" href="#\u914D\u7F6E-include-exclude-\u6765\u8FC7\u6EE4\u6570\u636E" aria-hidden="true">#</a> \u914D\u7F6E include/exclude \u6765\u8FC7\u6EE4\u6570\u636E</h3><p>\u5982\u679C\u5E94\u7528\u6BD4\u8F83\u590D\u6742\uFF0C\u751F\u6210\u7684\u5185\u5BB9\u5F88\u591A\uFF0C\u60F3\u53EA\u5173\u6CE8\u90E8\u5206\u6570\u636E\uFF0C\u53EF\u4EE5\u901A\u8FC7 include/exclude \u6765\u8FC7\u6EE4\u3002\u6BD4\u5982</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>profiler start --include <span class="token string">'java/*'</span> --include <span class="token string">'demo/*'</span> --exclude <span class="token string">'*Unsafe.park*'</span>
|
||
|
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><blockquote><p>include/exclude \u90FD\u652F\u6301\u8BBE\u7F6E\u591A\u4E2A\u503C \uFF0C\u4F46\u662F\u9700\u8981\u914D\u7F6E\u5728\u547D\u4EE4\u884C\u7684\u6700\u540E\u3002</p></blockquote><h3 id="\u6307\u5B9A\u6267\u884C\u65F6\u95F4" tabindex="-1"><a class="header-anchor" href="#\u6307\u5B9A\u6267\u884C\u65F6\u95F4" aria-hidden="true">#</a> \u6307\u5B9A\u6267\u884C\u65F6\u95F4</h3><p>\u6BD4\u5982\uFF0C\u5E0C\u671B profiler \u6267\u884C 300 \u79D2\u81EA\u52A8\u7ED3\u675F\uFF0C\u53EF\u4EE5\u7528 <code>-d</code>/<code>--duration</code> \u53C2\u6570\u6307\u5B9A\uFF1A</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>profiler start --duration <span class="token number">300</span>
|
||
|
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="\u751F\u6210-jfr-\u683C\u5F0F\u7ED3\u679C" tabindex="-1"><a class="header-anchor" href="#\u751F\u6210-jfr-\u683C\u5F0F\u7ED3\u679C" aria-hidden="true">#</a> \u751F\u6210 jfr \u683C\u5F0F\u7ED3\u679C</h3><blockquote><p>\u6CE8\u610F\uFF0Cjfr \u53EA\u652F\u6301\u5728 <code>start</code>\u65F6\u914D\u7F6E\u3002\u5982\u679C\u662F\u5728<code>stop</code>\u65F6\u6307\u5B9A\uFF0C\u5219\u4E0D\u4F1A\u751F\u6548\u3002</p></blockquote><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>profiler start --file /tmp/test.jfr
|
||
|
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><code>file</code>\u53C2\u6570\u652F\u6301\u4E00\u4E9B\u53D8\u91CF\uFF1A</p><ul><li>\u65F6\u95F4\u6233\uFF1A <code>--file /tmp/test-%t.jfr</code></li><li>\u8FDB\u7A0B ID\uFF1A <code>--file /tmp/test-%p.jfr</code></li></ul><p>\u751F\u6210\u7684\u7ED3\u679C\u53EF\u4EE5\u7528\u652F\u6301 jfr \u683C\u5F0F\u7684\u5DE5\u5177\u6765\u67E5\u770B\u3002\u6BD4\u5982\uFF1A</p><ul><li>JDK Mission Control \uFF1A https://github.com/openjdk/jmc</li><li>JProfiler \uFF1A https://github.com/alibaba/arthas/issues/1416</li></ul><h3 id="\u751F\u6210\u7684\u706B\u7130\u56FE\u91CC\u7684-unknown" tabindex="-1"><a class="header-anchor" href="#\u751F\u6210\u7684\u706B\u7130\u56FE\u91CC\u7684-unknown" aria-hidden="true">#</a> \u751F\u6210\u7684\u706B\u7130\u56FE\u91CC\u7684 unknown</h3><ul><li>https://github.com/jvm-profiling-tools/async-profiler/discussions/409</li></ul>`,23);function J(K,F){const a=o("ExternalLinkIcon");return d(),c("div",null,[p,e("p",null,[e("a",h,[m,v,i(a)])]),e("div",b,[f,e("p",null,[g,e("a",_,[x,i(a)]),k])]),y,e("p",null,[j,e("a",S,[$,i(a)]),w,L,q]),B,e("p",null,[A,C,N,e("a",V,[E,i(a)])]),I,e("p",null,[O,e("a",P,[T,i(a)])]),D])}var z=l(u,[["render",J],["__file","profiler.html.vue"]]);export{z as default};
|