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/doc/thread.html

153 lines
93 KiB
HTML

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
3 years ago
<meta name="generator" content="VuePress 2.0.0-beta.51">
<style>
:root {
--c-bg: #fff;
}
html.dark {
--c-bg: #22272e;
}
html, body {
background-color: var(--c-bg);
}
</style>
<script>
const userMode = localStorage.getItem('vuepress-color-scheme');
const systemDarkMode = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
if (userMode === 'dark' || (userMode !== 'light' && systemDarkMode)) {
document.documentElement.classList.toggle('dark', true);
}
</script>
3 years ago
<link rel="icon" href="/images/favicon.ico"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta property="og:title" content="Arthas"><meta property="og:image:alt" content="Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas - alibaba/arthas: Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas"><meta property="og:image" content="/images/arthas_mate_image.png"><meta property="og:description" content="Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas - alibaba/arthas: Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas"><meta property="og:image:width" content="1200"><meta property="og:image:height" content="600"><meta property="twitter:image:src" content="/images/arthas_mate_image.png"><meta property="twitter:image:alt" content="Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas - alibaba/arthas: Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas"><meta itemprop="name" content="Arthas"><meta itemprop="image" content="/images/arthas_mate_image.png"><meta itemprop="description" content="Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas - alibaba/arthas: Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas"><script>
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?d5c5e25b100f0eb51a4c35c8a86ea9b4";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
2 years ago
</script><meta name="aes-config" content="pid=xux-opensource&user_type=101&uid=&username=&dim10=arthas"><script src="//g.alicdn.com/alilog/mlog/aplus_v2.js" id="beacon-aplus" exparams="clog=o&aplus&sidx=aplusSidx&ckx=aplusCkx"></script><script src="//g.alicdn.com/aes/??tracker/1.0.34/index.js,tracker-plugin-pv/2.4.5/index.js,tracker-plugin-event/1.2.5/index.js,tracker-plugin-jserror/1.0.13/index.js,tracker-plugin-api/1.1.14/index.js,tracker-plugin-perf/1.1.8/index.js,tracker-plugin-eventTiming/1.0.4/index.js"></script><title>thread | arthas</title><meta name="description" content="arthas 使用文档">
2 years ago
<link rel="modulepreload" href="/assets/app.a26fb751.js"><link rel="modulepreload" href="/assets/thread.html.1be97a5f.js"><link rel="modulepreload" href="/assets/thread.html.5799728a.js"><link rel="prefetch" href="/assets/index.html.84788405.js"><link rel="prefetch" href="/assets/index.html.806ea641.js"><link rel="prefetch" href="/assets/advanced-use.html.6a51f976.js"><link rel="prefetch" href="/assets/advice-class.html.224ee4a2.js"><link rel="prefetch" href="/assets/agent.html.7fb2e994.js"><link rel="prefetch" href="/assets/arthas-properties.html.0aa14eb6.js"><link rel="prefetch" href="/assets/arthas3.html.c547dc28.js"><link rel="prefetch" href="/assets/async.html.227408ac.js"><link rel="prefetch" href="/assets/auth.html.75b454c4.js"><link rel="prefetch" href="/assets/base64.html.cfb6f7e0.js"><link rel="prefetch" href="/assets/batch-support.html.6dd8c760.js"><link rel="prefetch" href="/assets/cat.html.6cdc566b.js"><link rel="prefetch" href="/assets/classloader.html.75c5e1ca.js"><link rel="prefetch" href="/assets/cls.html.2c126349.js"><link rel="prefetch" href="/assets/commands.html.23fd8667.js"><link rel="prefetch" href="/assets/contact-us.html.d767be56.js"><link rel="prefetch" href="/assets/dashboard.html.1dca4ac9.js"><link rel="prefetch" href="/assets/docker.html.9f25a18e.js"><link rel="prefetch" href="/assets/download.html.07b6d1c2.js"><link rel="prefetch" href="/assets/dump.html.213bb737.js"><link rel="prefetch" href="/assets/echo.html.8dc5f2cf.js"><link rel="prefetch" href="/assets/faq.html.bfa7b88d.js"><link rel="prefetch" href="/assets/getstatic.html.ea55aee5.js"><link rel="prefetch" href="/assets/grep.html.608be554.js"><link rel="prefetch" href="/assets/groovy.html.cb1faf0d.js"><link rel="prefetch" href="/assets/heapdump.html.d7c1054b.js"><link rel="prefetch" href="/assets/help.html.b816fbc7.js"><link rel="prefetch" href="/assets/history.html.585c7365.js"><link rel="prefetch" href="/assets/http-api.html.b873cd80.js"><link rel="prefetch" href="/assets/idea-plugin.html.ae8d6fdf.js"><link rel="prefetch" href="/assets/install-detail.html.a3dc2197.js"><link rel="prefetch" href="/assets/jad.html.d284d3c9.js"><link rel="prefetch" href="/assets/jfr.html.036cb593.js"><link rel="prefetch" href="/assets/jvm.html.9a5d399f.js"><link rel="prefetch" href="/assets/keymap.html.3df742d1.js"><link rel="prefetch" href="/assets/logger.html.0645797d.js"><link rel="prefetch" href="/assets/manual-install.html.0f1923ab.js"><link rel="prefetch" href="/assets/mbean.html.4ecaa7de.js"><link rel="prefetch" href="/assets/mc.html.03d8bb2f.js"><link rel="prefetch" href="/assets/memory.html.588ad57c.js"><link rel="prefetch" href="/assets/monitor.html.12cb2ce0.js"><link rel="prefetch" href="/assets/ognl.html.e34bbf20.js"><link rel="prefetch" href="/assets/options.html.668e000e.js"><link rel="prefetch" href="/assets/perfcounter.html.e5a4c6a0.js"><link rel="prefetch" href="/assets/profiler.html.2e0b667d.js"><link rel="prefetch" href="/assets/pwd.html.2d8e26f3.js"><link rel="prefetch" href="/assets/quick-start.html.66e6f859.js"><link rel="prefetch" href="/assets/quit.html.ee51efad.js"><link rel="prefetch" href="/assets/redefine.html.97540496.js"><link rel="prefetch" href="/assets/release-notes.html.a836d631.js"><link rel="prefetch" href="/assets/reset.html.e415a09c.js"><link rel="prefetch" href="/assets/retransform.html.7c2da729.js"><link rel="prefetch" href="/assets/save-log.html.676a8345.js"><link rel="prefetch" href="/assets/sc.html.7cc5c092.js"><link rel="prefetch" href="/assets/session.html.8e309fff.js"><link rel="prefetch" href="/assets/sm.html.488c49b6.js"><link rel="prefetch" href="/assets/spring-boot-starter.html.e9b63005.js"><link rel="prefetch" href="/assets/stack.html.347b1212.js"><link rel="prefetch" href="/assets/start-arthas.html.d9639d4c.js"><link rel="prefetch" href="/assets/stop.html.13a70a9e.js"><link rel="prefetch" href="/assets/sysenv.html.928f9596.js"><link rel="prefetch" href="/assets/sysprop.html.d7ae9a83.js"><link rel="prefetch" href="/assets/tee.html.8e722a1e.js"><link rel="prefetch" href="/assets/trace.html.dee12253.j
3 years ago
<link rel="stylesheet" href="/assets/style.da1934a3.css">
</head>
<body>
2 years ago
<div id="app"><!--[--><div class="theme-container"><!--[--><header class="navbar"><div class="toggle-sidebar-button" title="切换侧边栏" aria-expanded="false" role="button" tabindex="0"><div class="icon" aria-hidden="true"><span></span><span></span><span></span></div></div><span><a href="/" class="" data-v-61144abc><!----><span class="site-name can-hide" data-v-61144abc>arthas</span><span class="navbar-version" data-v-61144abc>v3.6.8</span></a></span><div class="navbar-items-wrapper" style=""><!--[--><!--]--><nav class="navbar-items can-hide"><!--[--><div class="navbar-item"><a href="/" class="" aria-label="首页"><!--[--><!--]--> 首页 <!--[--><!--]--></a></div><div class="navbar-item"><a class="external-link" href="/doc/arthas-tutorials.html?language=cn&amp;id=arthas-basics" rel="noopener noreferrer" target="_blank" aria-label="在线教程"><!--[--><!--]--><span>在线教程</span><span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">在新窗口打开</span></span><!--[--><!--]--></a></div><div class="navbar-item"><a href="/doc/" class="router-link-active" aria-label="文档"><!--[--><!--]--> 文档 <!--[--><!--]--></a></div><div class="navbar-item"><a href="/doc/commands.md" class="" aria-label="命令列表"><!--[--><!--]--> 命令列表 <!--[--><!--]--></a></div><div class="navbar-item"><a href="/doc/download.md" class="" aria-label="下载"><!--[--><!--]--> 下载 <!--[--><!--]--></a></div><div class="navbar-item"><div class="navbar-dropdown-wrapper"><button class="navbar-dropdown-title" type="button" aria-label="解决方案"><span class="title">解决方案</span><span class="arrow down"></span></button><button class="navbar-dropdown-title-mobile" type="button" aria-label="解决方案"><span class="title">解决方案</span><span class="right arrow"></span></button><ul style="display:none;" class="navbar-dropdown"><!--[--><li class="navbar-dropdown-item"><a class="external-link" href="https://cn.aliyun.com/product/aliware/mse?spm=arthas.topbar.0.0.0" rel="noopener noreferrer" target="_blank" aria-label="微服务解决方案"><!--[--><!--]--><span>微服务解决方案</span><span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">在新窗口打开</span></span><!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a class="external-link" href="https://www.aliyun.com/aliware/txc?spm=arthas.topbar.0.0.0" rel="noopener noreferrer" target="_blank" aria-label="分布式事务解决方案"><!--[--><!--]--><span>分布式事务解决方案</span><span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">在新窗口打开</span></span><!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a class="external-link" href="https://www.aliyun.com/product/ahas?spm=artha
<span class="token string">&quot;C1 CompilerThread0&quot;</span> <span class="token punctuation">[</span>Internal<span class="token punctuation">]</span> <span class="token assign-left variable">cpuUsage</span><span class="token operator">=</span><span class="token number">1.63</span>% <span class="token assign-left variable">deltaTime</span><span class="token operator">=</span>3ms <span class="token assign-left variable">time</span><span class="token operator">=</span>1170ms
<span class="token string">&quot;arthas-command-execute&quot;</span> <span class="token assign-left variable">Id</span><span class="token operator">=</span><span class="token number">23</span> <span class="token assign-left variable">cpuUsage</span><span class="token operator">=</span><span class="token number">0.11</span>% <span class="token assign-left variable">deltaTime</span><span class="token operator">=</span>0ms <span class="token assign-left variable">time</span><span class="token operator">=</span>401ms RUNNABLE
at java.management@11.0.7/sun.management.ThreadImpl.dumpThreads0<span class="token punctuation">(</span>Native Method<span class="token punctuation">)</span>
at java.management@11.0.7/sun.management.ThreadImpl.getThreadInfo<span class="token punctuation">(</span>ThreadImpl.java:466<span class="token punctuation">)</span>
at com.taobao.arthas.core.command.monitor200.ThreadCommand.processTopBusyThreads<span class="token punctuation">(</span>ThreadCommand.java:199<span class="token punctuation">)</span>
at com.taobao.arthas.core.command.monitor200.ThreadCommand.process<span class="token punctuation">(</span>ThreadCommand.java:122<span class="token punctuation">)</span>
at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl.process<span class="token punctuation">(</span>AnnotatedCommandImpl.java:82<span class="token punctuation">)</span>
at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl.access<span class="token variable">$100</span><span class="token punctuation">(</span>AnnotatedCommandImpl.java:18<span class="token punctuation">)</span>
at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl<span class="token variable">$ProcessHandler</span>.handle<span class="token punctuation">(</span>AnnotatedCommandImpl.java:111<span class="token punctuation">)</span>
at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl<span class="token variable">$ProcessHandler</span>.handle<span class="token punctuation">(</span>AnnotatedCommandImpl.java:108<span class="token punctuation">)</span>
at com.taobao.arthas.core.shell.system.impl.ProcessImpl<span class="token variable">$CommandProcessTask</span>.run<span class="token punctuation">(</span>ProcessImpl.java:385<span class="token punctuation">)</span>
at java.base@11.0.7/java.util.concurrent.Executors<span class="token variable">$RunnableAdapter</span>.call<span class="token punctuation">(</span>Executors.java:515<span class="token punctuation">)</span>
at java.base@11.0.7/java.util.concurrent.FutureTask.run<span class="token punctuation">(</span>FutureTask.java:264<span class="token punctuation">)</span>
at java.base@11.0.7/java.util.concurrent.ScheduledThreadPoolExecutor<span class="token variable">$ScheduledFutureTask</span>.run<span class="token punctuation">(</span>ScheduledThreadPoolExecutor.java:304<span class="token punctuation">)</span>
at java.base@11.0.7/java.util.concurrent.ThreadPoolExecutor.runWorker<span class="token punctuation">(</span>ThreadPoolExecutor.java:1128<span class="token punctuation">)</span>
at java.base@11.0.7/java.util.concurrent.ThreadPoolExecutor<span class="token variable">$Worker</span>.run<span class="token punctuation">(</span>ThreadPoolExecutor.java:628<span class="token punctuation">)</span>
at java.base@11.0.7/java.lang.Thread.run<span class="token punctuation">(</span>Thread.java:834<span class="token punctuation">)</span>
<span class="token string">&quot;VM Periodic Task Thread&quot;</span> <span class="token punctuation">[</span>Internal<span class="token punctuation">]</span> <span class="token assign-left variable">cpuUsage</span><span class="token operator">=</span><span class="token number">0.07</span>% <span class="token assign-left variable">deltaTime</span><span class="token operator">=</span>0ms <span class="token assign-left variable">time</span><span class="token operator">=</span>584ms
3 years ago
</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 class="line-number"></div></div></div><ul><li>没有线程 ID包含<code>[Internal]</code>表示为 JVM 内部线程,参考<a href="/doc/dashboard.html" class="">dashboard</a>命令的介绍。</li><li><code>cpuUsage</code>为采样间隔时间内线程的 CPU 使用率,与<a href="/doc/dashboard.html" class="">dashboard</a>命令的数据一致。</li><li><code>deltaTime</code>为采样间隔时间内线程的增量 CPU 时间,小于 1ms 时被取整显示为 0ms。</li><li><code>time</code> 线程运行总 CPU 时间。</li></ul><p>注意:线程栈为第二采样结束时获取,不能表明采样间隔时间内该线程都是在处理相同的任务。建议间隔时间不要太长,可能间隔时间越大越不准确。 可以根据具体情况尝试指定不同的间隔时间,观察输出结果。</p><h3 id="当没有参数时-显示第一页线程的信息" tabindex="-1"><a class="header-anchor" href="#当没有参数时-显示第一页线程的信息" aria-hidden="true">#</a> 当没有参数时,显示第一页线程的信息</h3><p>默认按照 CPU 增量时间降序排列,只显示第一页数据。</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ thread
Threads Total: <span class="token number">33</span>, NEW: <span class="token number">0</span>, RUNNABLE: <span class="token number">9</span>, BLOCKED: <span class="token number">0</span>, WAITING: <span class="token number">3</span>, TIMED_WAITING: <span class="token number">4</span>, TERMINATED: <span class="token number">0</span>, Internal threads: <span class="token number">17</span>
ID NAME GROUP PRIORITY STATE %CPU DELTA_TIME TIME INTERRUPT DAEMON
3 years ago
<span class="token parameter variable">-1</span> C2 CompilerThread0 - <span class="token parameter variable">-1</span> - <span class="token number">5.06</span> <span class="token number">0.010</span> <span class="token number">0</span>:0.973 <span class="token boolean">false</span> <span class="token boolean">true</span>
<span class="token parameter variable">-1</span> C1 CompilerThread0 - <span class="token parameter variable">-1</span> - <span class="token number">0.95</span> <span class="token number">0.001</span> <span class="token number">0</span>:0.603 <span class="token boolean">false</span> <span class="token boolean">true</span>
<span class="token number">23</span> arthas-command-execute system <span class="token number">5</span> RUNNABLE <span class="token number">0.17</span> <span class="token number">0.000</span> <span class="token number">0</span>:0.226 <span class="token boolean">false</span> <span class="token boolean">true</span>
3 years ago
<span class="token parameter variable">-1</span> VM Periodic Task Thread - <span class="token parameter variable">-1</span> - <span class="token number">0.05</span> <span class="token number">0.000</span> <span class="token number">0</span>:0.094 <span class="token boolean">false</span> <span class="token boolean">true</span>
<span class="token parameter variable">-1</span> Sweeper thread - <span class="token parameter variable">-1</span> - <span class="token number">0.04</span> <span class="token number">0.000</span> <span class="token number">0</span>:0.011 <span class="token boolean">false</span> <span class="token boolean">true</span>
<span class="token parameter variable">-1</span> G1 Young RemSet Sampling - <span class="token parameter variable">-1</span> - <span class="token number">0.02</span> <span class="token number">0.000</span> <span class="token number">0</span>:0.025 <span class="token boolean">false</span> <span class="token boolean">true</span>
<span class="token number">12</span> Attach Listener system <span class="token number">9</span> RUNNABLE <span class="token number">0.0</span> <span class="token number">0.000</span> <span class="token number">0</span>:0.022 <span class="token boolean">false</span> <span class="token boolean">true</span>
<span class="token number">11</span> Common-Cleaner InnocuousThrea <span class="token number">8</span> TIMED_WAI <span class="token number">0.0</span> <span class="token number">0.000</span> <span class="token number">0</span>:0.000 <span class="token boolean">false</span> <span class="token boolean">true</span>
<span class="token number">3</span> Finalizer system <span class="token number">8</span> WAITING <span class="token number">0.0</span> <span class="token number">0.000</span> <span class="token number">0</span>:0.000 <span class="token boolean">false</span> <span class="token boolean">true</span>
<span class="token number">2</span> Reference Handler system <span class="token number">10</span> RUNNABLE <span class="token number">0.0</span> <span class="token number">0.000</span> <span class="token number">0</span>:0.000 <span class="token boolean">false</span> <span class="token boolean">true</span>
<span class="token number">4</span> Signal Dispatcher system <span class="token number">9</span> RUNNABLE <span class="token number">0.0</span> <span class="token number">0.000</span> <span class="token number">0</span>:0.000 <span class="token boolean">false</span> <span class="token boolean">true</span>
<span class="token number">15</span> arthas-NettyHttpTelnetBootstra system <span class="token number">5</span> RUNNABLE <span class="token number">0.0</span> <span class="token number">0.000</span> <span class="token number">0</span>:0.029 <span class="token boolean">false</span> <span class="token boolean">true</span>
<span class="token number">22</span> arthas-NettyHttpTelnetBootstra system <span class="token number">5</span> RUNNABLE <span class="token number">0.0</span> <span class="token number">0.000</span> <span class="token number">0</span>:0.196 <span class="token boolean">false</span> <span class="token boolean">true</span>
<span class="token number">24</span> arthas-NettyHttpTelnetBootstra system <span class="token number">5</span> RUNNABLE <span class="token number">0.0</span> <span class="token number">0.000</span> <span class="token number">0</span>:0.038 <span class="token boolean">false</span> <span class="token boolean">true</span>
<span class="token number">16</span> arthas-NettyWebsocketTtyBootst system <span class="token number">5</span> RUNNABLE <span class="token number">0.0</span> <span class="token number">0.000</span> <span class="token number">0</span>:0.001 <span class="token boolean">false</span> <span class="token boolean">true</span>
<span class="token number">17</span> arthas-NettyWebsocketTtyBootst system <span class="token number">5</span> RUNNABLE <span class="token number">0.0</span> <span class="token number">0.000</span> <span class="token number">0</span>:0.001 <span class="token boolean">false</span> <span class="token boolean">true</span>
3 years ago
</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></div><h3 id="thread-all-显示所有匹配的线程" tabindex="-1"><a class="header-anchor" href="#thread-all-显示所有匹配的线程" aria-hidden="true">#</a> thread --all, 显示所有匹配的线程</h3><p>显示所有匹配线程信息,有时需要获取全部 JVM 的线程数据进行分析。</p><h3 id="thread-id-显示指定线程的运行堆栈" tabindex="-1"><a class="header-anchor" href="#thread-id-显示指定线程的运行堆栈" aria-hidden="true">#</a> thread id, 显示指定线程的运行堆栈</h3><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ thread <span class="token number">1</span>
<span class="token string">&quot;main&quot;</span> <span class="token assign-left variable">Id</span><span class="token operator">=</span><span class="token number">1</span> WAITING on java.util.concurrent.CountDownLatch<span class="token variable">$Sync</span>@29fafb28
at sun.misc.Unsafe.park<span class="token punctuation">(</span>Native Method<span class="token punctuation">)</span>
- waiting on java.util.concurrent.CountDownLatch<span class="token variable">$Sync</span>@29fafb28
at java.util.concurrent.locks.LockSupport.park<span class="token punctuation">(</span>LockSupport.java:175<span class="token punctuation">)</span>
at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt<span class="token punctuation">(</span>AbstractQueuedSynchronizer.java:836<span class="token punctuation">)</span>
at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly<span class="token punctuation">(</span>AbstractQueuedSynchronizer.java:997<span class="token punctuation">)</span>
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly<span class="token punctuation">(</span>AbstractQueuedSynchronizer.java:1304<span class="token punctuation">)</span>
at java.util.concurrent.CountDownLatch.await<span class="token punctuation">(</span>CountDownLatch.java:231<span class="token punctuation">)</span>
3 years ago
</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></div><h3 id="thread-b-找出当前阻塞其他线程的线程" tabindex="-1"><a class="header-anchor" href="#thread-b-找出当前阻塞其他线程的线程" aria-hidden="true">#</a> thread -b, 找出当前阻塞其他线程的线程</h3><p>有时候我们发现应用卡住了, 通常是由于某个线程拿住了某个锁, 并且其他线程都在等待这把锁造成的。 为了排查这类问题, arthas 提供了<code>thread -b</code> 一键找出那个罪魁祸首。</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ thread <span class="token parameter variable">-b</span>
<span class="token string">&quot;http-bio-8080-exec-4&quot;</span> <span class="token assign-left variable">Id</span><span class="token operator">=</span><span class="token number">27</span> TIMED_WAITING
at java.lang.Thread.sleep<span class="token punctuation">(</span>Native Method<span class="token punctuation">)</span>
at test.arthas.TestThreadBlocking.doGet<span class="token punctuation">(</span>TestThreadBlocking.java:22<span class="token punctuation">)</span>
- locked java.lang.Object@725be470 <span class="token operator">&lt;</span>---- but blocks <span class="token number">4</span> other threads<span class="token operator">!</span>
at javax.servlet.http.HttpServlet.service<span class="token punctuation">(</span>HttpServlet.java:624<span class="token punctuation">)</span>
at javax.servlet.http.HttpServlet.service<span class="token punctuation">(</span>HttpServlet.java:731<span class="token punctuation">)</span>
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter<span class="token punctuation">(</span>ApplicationFilterChain.java:303<span class="token punctuation">)</span>
at org.apache.catalina.core.ApplicationFilterChain.doFilter<span class="token punctuation">(</span>ApplicationFilterChain.java:208<span class="token punctuation">)</span>
at org.apache.tomcat.websocket.server.WsFilter.doFilter<span class="token punctuation">(</span>WsFilter.java:52<span class="token punctuation">)</span>
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter<span class="token punctuation">(</span>ApplicationFilterChain.java:241<span class="token punctuation">)</span>
at org.apache.catalina.core.ApplicationFilterChain.doFilter<span class="token punctuation">(</span>ApplicationFilterChain.java:208<span class="token punctuation">)</span>
at test.filter.TestDurexFilter.doFilter<span class="token punctuation">(</span>TestDurexFilter.java:46<span class="token punctuation">)</span>
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter<span class="token punctuation">(</span>ApplicationFilterChain.java:241<span class="token punctuation">)</span>
at org.apache.catalina.core.ApplicationFilterChain.doFilter<span class="token punctuation">(</span>ApplicationFilterChain.java:208<span class="token punctuation">)</span>
at org.apache.catalina.core.StandardWrapperValve.invoke<span class="token punctuation">(</span>StandardWrapperValve.java:220<span class="token punctuation">)</span>
at org.apache.catalina.core.StandardContextValve.invoke<span class="token punctuation">(</span>StandardContextValve.java:122<span class="token punctuation">)</span>
at org.apache.catalina.authenticator.AuthenticatorBase.invoke<span class="token punctuation">(</span>AuthenticatorBase.java:505<span class="token punctuation">)</span>
at com.taobao.tomcat.valves.ContextLoadFilterValve<span class="token variable">$FilterChainAdapter</span>.doFilter<span class="token punctuation">(</span>ContextLoadFilterValve.java:191<span class="token punctuation">)</span>
at com.taobao.eagleeye.EagleEyeFilter.doFilter<span class="token punctuation">(</span>EagleEyeFilter.java:81<span class="token punctuation">)</span>
at com.taobao.tomcat.valves.ContextLoadFilterValve.invoke<span class="token punctuation">(</span>ContextLoadFilterValve.java:150<span class="token punctuation">)</span>
at org.apache.catalina.core.StandardHostValve.invoke<span class="token punctuation">(</span>StandardHostValve.java:170<span class="token punctuation">)</span>
at org.apache.catalina.valves.ErrorReportValve.invoke<span class="token punctuation">(</span>ErrorReportValve.java:103<span class="token punctuation">)</span>
at org.apache.catalina.core.StandardEngineValve.invoke<span class="token punctuation">(</span>StandardEngineValve.java:116<span class="token punctuation">)</span>
at org.apache.catalina.connector.CoyoteAdapter.service<span class="token punctuation">(</span>CoyoteAdapter.java:429<span class="token punctuation">)</span>
at org.apache.coyote.http11.AbstractHttp11Processor.process<span class="token punctuation">(</span>AbstractHttp11Processor.java:1085<span class="token punctuation">)</span>
at org.apache.coyote.AbstractProtocol<span class="token variable">$AbstractConnectionHandler</span>.process<span class="token punctuation">(</span>AbstractProtocol.java:625<span class="token punctuation">)</span>
at org.apache.tomcat.util.net.JIoEndpoint<span class="token variable">$SocketProcessor</span>.run<span class="token punctuation">(</span>JIoEndpoint.java:318<span class="token punctuation">)</span>
- locked org.apache.tomcat.util.net.SocketWrapper@7127ee12
at java.util.concurrent.ThreadPoolExecutor.runWorker<span class="token punctuation">(</span>ThreadPoolExecutor.java:1142<span class="token punctuation">)</span>
at java.util.concurrent.ThreadPoolExecutor<span class="token variable">$Worker</span>.run<span class="token punctuation">(</span>ThreadPoolExecutor.java:617<span class="token punctuation">)</span>
at org.apache.tomcat.util.threads.TaskThread<span class="token variable">$WrappingRunnable</span>.run<span class="token punctuation">(</span>TaskThread.java:61<span class="token punctuation">)</span>
at java.lang.Thread.run<span class="token punctuation">(</span>Thread.java:745<span class="token punctuation">)</span>
Number of locked synchronizers <span class="token operator">=</span> <span class="token number">1</span>
- java.util.concurrent.ThreadPoolExecutor<span class="token variable">$Worker</span>@31a6493e
3 years ago
</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 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><div class="custom-container warning"><p class="custom-container-title">注意</p><p>注意, 目前只支持找出 synchronized 关键字阻塞住的线程, 如果是<code>java.util.concurrent.Lock</code> 目前还不支持。</p></div><h3 id="thread-i-指定采样时间间隔" tabindex="-1"><a class="header-anchor" href="#thread-i-指定采样时间间隔" aria-hidden="true">#</a> thread -i, 指定采样时间间隔</h3><ul><li><p><code>thread -i 1000</code> : 统计最近 1000ms 内的线程 CPU 时间。</p></li><li><p><code>thread -n 3 -i 1000</code> : 列出 1000ms 内最忙的 3 个线程栈</p></li></ul><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ thread <span class="token parameter variable">-n</span> <span class="token number">3</span> <span class="token parameter variable">-i</span> <span class="token number">1000</span>
<span class="token string">&quot;as-command-execute-daemon&quot;</span> <span class="token assign-left variable">Id</span><span class="token operator">=</span><span class="token number">4759</span> <span class="token assign-left variable">cpuUsage</span><span class="token operator">=</span><span class="token number">23</span>% RUNNABLE
at sun.management.ThreadImpl.dumpThreads0<span class="token punctuation">(</span>Native Method<span class="token punctuation">)</span>
at sun.management.ThreadImpl.getThreadInfo<span class="token punctuation">(</span>ThreadImpl.java:440<span class="token punctuation">)</span>
at com.taobao.arthas.core.command.monitor200.ThreadCommand.processTopBusyThreads<span class="token punctuation">(</span>ThreadCommand.java:133<span class="token punctuation">)</span>
at com.taobao.arthas.core.command.monitor200.ThreadCommand.process<span class="token punctuation">(</span>ThreadCommand.java:79<span class="token punctuation">)</span>
at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl.process<span class="token punctuation">(</span>AnnotatedCommandImpl.java:96<span class="token punctuation">)</span>
at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl.access<span class="token variable">$100</span><span class="token punctuation">(</span>AnnotatedCommandImpl.java:27<span class="token punctuation">)</span>
at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl<span class="token variable">$ProcessHandler</span>.handle<span class="token punctuation">(</span>AnnotatedCommandImpl.java:125<span class="token punctuation">)</span>
at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl<span class="token variable">$ProcessHandler</span>.handle<span class="token punctuation">(</span>AnnotatedCommandImpl.java:122<span class="token punctuation">)</span>
at com.taobao.arthas.core.shell.system.impl.ProcessImpl<span class="token variable">$CommandProcessTask</span>.run<span class="token punctuation">(</span>ProcessImpl.java:332<span class="token punctuation">)</span>
at java.util.concurrent.ThreadPoolExecutor.runWorker<span class="token punctuation">(</span>ThreadPoolExecutor.java:1142<span class="token punctuation">)</span>
at java.util.concurrent.ThreadPoolExecutor<span class="token variable">$Worker</span>.run<span class="token punctuation">(</span>ThreadPoolExecutor.java:617<span class="token punctuation">)</span>
at java.lang.Thread.run<span class="token punctuation">(</span>Thread.java:756<span class="token punctuation">)</span>
Number of locked synchronizers <span class="token operator">=</span> <span class="token number">1</span>
- java.util.concurrent.ThreadPoolExecutor<span class="token variable">$Worker</span>@546aeec1
<span class="token punctuation">..</span>.
3 years ago
</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></div><h3 id="thread-state-查看指定状态的线程" tabindex="-1"><a class="header-anchor" href="#thread-state-查看指定状态的线程" aria-hidden="true">#</a> thread --state ,查看指定状态的线程</h3><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code><span class="token punctuation">[</span>arthas@28114<span class="token punctuation">]</span>$ thread <span class="token parameter variable">--state</span> WAITING
Threads Total: <span class="token number">16</span>, NEW: <span class="token number">0</span>, RUNNABLE: <span class="token number">9</span>, BLOCKED: <span class="token number">0</span>, WAITING: <span class="token number">3</span>, TIMED_WAITING: <span class="token number">4</span>, TERMINATED: <span class="token number">0</span>
ID NAME GROUP PRIORITY STATE %CPU DELTA_TIME TIME INTERRUPTE DAEMON
<span class="token number">3</span> Finalizer system <span class="token number">8</span> WAITING <span class="token number">0.0</span> <span class="token number">0.000</span> <span class="token number">0</span>:0.000 <span class="token boolean">false</span> <span class="token boolean">true</span>
<span class="token number">20</span> arthas-UserStat system <span class="token number">9</span> WAITING <span class="token number">0.0</span> <span class="token number">0.000</span> <span class="token number">0</span>:0.001 <span class="token boolean">false</span> <span class="token boolean">true</span>
<span class="token number">14</span> arthas-timer system <span class="token number">9</span> WAITING <span class="token number">0.0</span> <span class="token number">0.000</span> <span class="token number">0</span>:0.000 <span class="token boolean">false</span> <span class="token boolean">true</span>
3 years ago
</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></div></div><!--[--><!--]--></div><footer class="page-meta right-menu-padding" data-v-fdd717e0><div class="meta-item edit-link"><a class="external-link meta-item-label" href="https://github.com/alibaba/arthas/edit/master/site/docs/doc/thread.md" rel="noopener noreferrer" target="_blank" aria-label="在 GitHub 上编辑此页"><!--[--><!--]--><span>在 GitHub 上编辑此页</span><span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">在新窗口打开</span></span><!--[--><!--]--></a></div><div class="meta-item last-updated"><span class="meta-item-label">Last Updated: </span><!----></div><div class="meta-item contributors"><span class="meta-item-label">贡献者: </span><span class="meta-item-info"><!--[--><!--[--><span class="contributor" title="email: hengyunabc@gmail.com">hengyunabc</span><!--[-->, <!--]--><!--]--><!--[--><span class="contributor" title="email: i@fatpandac.com">Fatpandac</span><!--[-->, <!--]--><!--]--><!--[--><span class="contributor" title="email: LHearen@126.com">Hearen</span><!--[-->, <!--]--><!--]--><!--[--><span class="contributor" title="email: hollowman186@vip.qq.com">Hollow Man</span><!--[-->, <!--]--><!--]--><!--[--><span class="contributor" title="email: kylixs@qq.com">gongdewei</span><!--[-->, <!--]--><!--]--><!--[--><span class="contributor" title="email: oldratlee@gmail.com">李鼎</span><!----><!--]--><!--]--></span></div></footer><nav class="page-nav right-menu-padding" data-v-fdd717e0><p class="inner"><span class="prev"><a href="/doc/sysprop.html" class="" aria-label="sysprop"><!--[--><!--]--> sysprop <!--[--><!--]--></a></span><span class="next"><a href="/doc/vmoption.html" class="" aria-label="vmoption"><!--[--><!--]--> vmoption <!--[--><!--]--></a></span></p></nav><!--[--><!--]--></main><!--]--></div><!----><!--]--></div>
2 years ago
<script type="module" src="/assets/app.a26fb751.js" defer></script>
</body>
</html>