mirror of
https://github.com/alibaba/arthas.git
synced 2024-04-21 10:21:39 +00:00
update doc
This commit is contained in:
@@ -42,7 +42,7 @@ curl -L TODO /install.sh | sh
|
||||
|
||||
`./as.sh`
|
||||
|
||||
执行该脚本的用户需要和目标进程具有相同的权限。在公司内部通常需要使用admin用户执行。
|
||||
执行该脚本的用户需要和目标进程具有相同的权限。比如以`admin`用户来执行:
|
||||
|
||||
`sudo su admin && ./as.sh` 或 `sudo -u admin -EH ./as.sh`
|
||||
|
||||
@@ -57,31 +57,31 @@ curl -L TODO /install.sh | sh
|
||||
#### 想快速了解系统、应用运行状况
|
||||
---
|
||||
|
||||
* [dashboard](cmds/dashboard)——当前系统的实时数据面板
|
||||
* [thread](cmds/thread)——查看当前 JVM 的线程堆栈信息
|
||||
* [jvm](cmds/jvm)——查看当前 JVM 的信息
|
||||
* [sysprop](cmds/sysprop)——查看和修改JVM的系统属性
|
||||
* **New!** [getstatic](cmds/getstatic)——查看类的静态属性
|
||||
* [dashboard](dashboard)——当前系统的实时数据面板
|
||||
* [thread](thread)——查看当前 JVM 的线程堆栈信息
|
||||
* [jvm](jvm)——查看当前 JVM 的信息
|
||||
* [sysprop](sysprop)——查看和修改JVM的系统属性
|
||||
* **New!** [getstatic](getstatic)——查看类的静态属性
|
||||
|
||||
#### 类、方法冲突、class文件、classloader继承问题等
|
||||
---
|
||||
|
||||
* [sc](cmds/sc)——查看JVM已加载的类信息
|
||||
* [sm](cmds/sm)——查看已加载类的方法信息
|
||||
* [dump](cmds/dump)——dump 已加载类的 byte code 到特定目录
|
||||
* [redefine](cmds/redefine)——加载外部的`.class`文件,redefine到JVM里
|
||||
* [jad](cmds/jad)——反编译指定已加载类的源码
|
||||
* [classloader](cmds/classloader)——查看classloader的继承树,urls,类加载信息,使用classloader去getResource
|
||||
* [sc](sc)——查看JVM已加载的类信息
|
||||
* [sm](sm)——查看已加载类的方法信息
|
||||
* [dump](dump)——dump 已加载类的 byte code 到特定目录
|
||||
* [redefine](redefine)——加载外部的`.class`文件,redefine到JVM里
|
||||
* [jad](jad)——反编译指定已加载类的源码
|
||||
* [classloader](classloader)——查看classloader的继承树,urls,类加载信息,使用classloader去getResource
|
||||
|
||||
#### 查看方法执行参数、异常、返回值、调用路径等
|
||||
|
||||
> 非常重要,请注意,这些命令,都通过字节码增强技术来实现的,会在指定类的方法中插入一些切面来实现数据统计和观测,因此在线上、预发使用时,请尽量明确需要观测的类、方法以及条件,诊断结束要执行 `shutdown` 或将增强过的类执行 `reset` 命令。
|
||||
|
||||
* [monitor](cmds/monitor)——方法执行监控
|
||||
* [watch](cmds/watch)——方法执行数据观测
|
||||
* [trace](cmds/trace)——方法内部调用路径,并输出方法路径上的每个节点上耗时
|
||||
* [stack](cmds/stack)——输出当前方法被调用的调用路径
|
||||
* [tt](cmds/tt)——方法执行数据的时空隧道,记录下指定方法每次调用的入参和返回信息,并能对这些不同的时间下调用进行观测
|
||||
* [monitor](monitor)——方法执行监控
|
||||
* [watch](watch)——方法执行数据观测
|
||||
* [trace](trace)——方法内部调用路径,并输出方法路径上的每个节点上耗时
|
||||
* [stack](stack)——输出当前方法被调用的调用路径
|
||||
* [tt](tt)——方法执行数据的时空隧道,记录下指定方法每次调用的入参和返回信息,并能对这些不同的时间下调用进行观测
|
||||
|
||||
#### options
|
||||
|
||||
@@ -92,11 +92,11 @@ curl -L TODO /install.sh | sh
|
||||
* help——查看命令帮助信息
|
||||
* cls——清空当前屏幕区域
|
||||
* session——查看当前会话的信息
|
||||
* [reset](cmds/reset)——重置增强类,将被 Arthas 增强过的类全部还原,Arthas 服务端关闭时会重置所有增强过的类
|
||||
* [reset](reset)——重置增强类,将被 Arthas 增强过的类全部还原,Arthas 服务端关闭时会重置所有增强过的类
|
||||
* version——输出当前目标 Java 进程所加载的 Arthas 版本号
|
||||
* quit——退出当前 Arthas 客户端,其他 Arthas 客户端不受影响
|
||||
* shutdown——关闭 Arthas 服务端,所有 Arthas 客户端全部退出
|
||||
* [keymap](cmds/keymap)——Arthas快捷键列表及自定义快捷键
|
||||
* [keymap](keymap)——Arthas快捷键列表及自定义快捷键
|
||||
|
||||
#### 管道
|
||||
|
||||
@@ -108,7 +108,7 @@ Arthas支持使用管道对上述命令的结果进行进一步的处理,如`s
|
||||
|
||||
#### 后台异步任务
|
||||
|
||||
当线上出现偶发的问题,比如需要watch某个条件,而这个条件一天可能才会出现一次时,异步后台任务就派上用场了,详情请参考[这里](async)
|
||||
当线上出现偶发的问题,比如需要watch某个条件,而这个条件一天可能才会出现一次时,异步后台任务就派上用场了,详情请参考[这里](async.md)
|
||||
|
||||
* 使用 > 将结果重写向到日志文件,使用 & 指定命令是后台运行,session断开不影响任务执行(生命周期默认为1天)
|
||||
* jobs——列出所有job
|
||||
@@ -122,9 +122,9 @@ TODO
|
||||
|
||||
### 5. 其他特性说明
|
||||
|
||||
* [异步命令支持](async)
|
||||
* [执行结果存日志](cmds/options)
|
||||
* [批处理的支持](batch-support)
|
||||
* [异步命令支持](async.md)
|
||||
* [执行结果存日志](options.md)
|
||||
* [批处理的支持](batch-support.md)
|
||||
* [ognl表达式的用法说明](TODO/articles/92448)
|
||||
|
||||
### 6. 用户使用案例
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
* 命令使用
|
||||
* [系统指标](cmds/dashboard)
|
||||
* [线程堆栈](cmds/thread)
|
||||
* [JVM信息](cmds/jvm)
|
||||
* [查看类信息](cmds/sc)
|
||||
* [查看方法信息](cmds/sm)
|
||||
* [dump字节码](cmds/dump)
|
||||
* [反编译类](cmds/jad)
|
||||
* [查看类加载信息](cmds/classloader)
|
||||
* [方法执行监控](cmds/monitor)
|
||||
* [方法AOP观测](cmds/watch)
|
||||
* [方法内部路径耗时](cmds/trace)
|
||||
* [查看方法调用栈](cmds/stack)
|
||||
* [方法执行记录与回放](cmds/tt)
|
||||
* [系统指标](dashboard)
|
||||
* [线程堆栈](thread)
|
||||
* [JVM信息](jvm)
|
||||
* [查看类信息](sc)
|
||||
* [查看方法信息](sm)
|
||||
* [dump字节码](dump)
|
||||
* [反编译类](jad)
|
||||
* [查看类加载信息](classloader)
|
||||
* [方法执行监控](monitor)
|
||||
* [方法AOP观测](watch)
|
||||
* [方法内部路径耗时](trace)
|
||||
* [查看方法调用栈](stack)
|
||||
* [方法执行记录与回放](tt)
|
||||
* [启动脚本说明](start-arthas)
|
||||
* [Release Notes](release-notes)
|
||||
* 常见问题
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
* [Introduction](introduction)
|
||||
* [Features](features)
|
||||
* [FAQ](faq-en)
|
||||
@@ -0,0 +1,75 @@
|
||||
进阶使用
|
||||
===
|
||||
|
||||
## 基础命令
|
||||
|
||||
|
||||
* help——查看命令帮助信息
|
||||
* cls——清空当前屏幕区域
|
||||
* session——查看当前会话的信息
|
||||
* [reset](reset.md)——重置增强类,将被 Arthas 增强过的类全部还原,Arthas 服务端关闭时会重置所有增强过的类
|
||||
* version——输出当前目标 Java 进程所加载的 Arthas 版本号
|
||||
* quit——退出当前 Arthas 客户端,其他 Arthas 客户端不受影响
|
||||
* shutdown——关闭 Arthas 服务端,所有 Arthas 客户端全部退出
|
||||
* [keymap](keymap.md)——Arthas快捷键列表及自定义快捷键
|
||||
|
||||
## jvm相关
|
||||
|
||||
|
||||
* [dashboard](dashboard.md)——当前系统的实时数据面板
|
||||
* [thread](thread.md)——查看当前 JVM 的线程堆栈信息
|
||||
* [jvm](jvm.md)——查看当前 JVM 的信息
|
||||
* [sysprop](sysprop.md)——查看和修改JVM的系统属性
|
||||
* **New!** [getstatic](getstatic.md)——查看类的静态属性
|
||||
|
||||
## class/classloader相关
|
||||
|
||||
|
||||
* [sc](sc.md)——查看JVM已加载的类信息
|
||||
* [sm](sm.md)——查看已加载类的方法信息
|
||||
* [dump](dump.md)——dump 已加载类的 byte code 到特定目录
|
||||
* [redefine](redefine.md)——加载外部的`.class`文件,redefine到JVM里
|
||||
* [jad](jad.md)——反编译指定已加载类的源码
|
||||
* [classloader](classloader.md)——查看classloader的继承树,urls,类加载信息,使用classloader去getResource
|
||||
|
||||
## monitor/watch/trace相关
|
||||
|
||||
|
||||
> 请注意,这些命令,都通过字节码增强技术来实现的,会在指定类的方法中插入一些切面来实现数据统计和观测,因此在线上、预发使用时,请尽量明确需要观测的类、方法以及条件,诊断结束要执行 `shutdown` 或将增强过的类执行 `reset` 命令。
|
||||
|
||||
* [monitor](monitor.md)——方法执行监控
|
||||
* [watch](watch.md)——方法执行数据观测
|
||||
* [trace](trace.md)——方法内部调用路径,并输出方法路径上的每个节点上耗时
|
||||
* [stack](stack.md)——输出当前方法被调用的调用路径
|
||||
* [tt](tt.md)——方法执行数据的时空隧道,记录下指定方法每次调用的入参和返回信息,并能对这些不同的时间下调用进行观测
|
||||
|
||||
## options
|
||||
|
||||
* [options](options.md)——查看或设置Arthas全局开关
|
||||
|
||||
|
||||
## 管道
|
||||
|
||||
Arthas支持使用管道对上述命令的结果进行进一步的处理,如`sm org.apache.log4j.Logger | grep <init>`
|
||||
|
||||
* grep——搜索满足条件的结果
|
||||
* plaintext——将命令的结果去除颜色
|
||||
* wc——按行统计输出结果
|
||||
|
||||
## 后台异步任务
|
||||
|
||||
当线上出现偶发的问题,比如需要watch某个条件,而这个条件一天可能才会出现一次时,异步后台任务就派上用场了,详情请参考[这里](async.md)
|
||||
|
||||
* 使用 > 将结果重写向到日志文件,使用 & 指定命令是后台运行,session断开不影响任务执行(生命周期默认为1天)
|
||||
* jobs——列出所有job
|
||||
* kill——强制终止任务
|
||||
* fg——将暂停的任务拉到前台执行
|
||||
* bg——将暂停的任务放到后台执行
|
||||
|
||||
|
||||
## 其他特性
|
||||
|
||||
* [异步命令支持](async.md)
|
||||
* [执行结果存日志](save-log.md)
|
||||
* [批处理的支持](batch-support.md)
|
||||
* [ognl表达式的用法说明](TODO/articles/92448)
|
||||
@@ -27,7 +27,7 @@ watch com.alibaba.sample.petstore.web.store.module.screen.ItemList add "params +
|
||||
|
||||
为了避免这个问题,Arthas 3.0中使用了ognl这个更加轻量的表达式求值库来代替groovy,彻底解决了groovy引起的FGC风险。但由于这个替换,导致原来使用groovy脚本编写的自定义脚本失效。这个问题留待后续解决。
|
||||
|
||||
在3.0中,watch命令的表达式部分的书写有了一些改变,详见[这里](https://github.com/alibaba/arthas/wiki/cmds/watch)
|
||||
在3.0中,watch命令的表达式部分的书写有了一些改变,详见[这里](https://github.com/alibaba/arthas/wiki/watch)
|
||||
|
||||
#### 提升rt统计精度
|
||||
|
||||
|
||||
@@ -63,7 +63,7 @@ watch com.alibaba.sample.petstore.web.store.module.screen.ItemList add "params +
|
||||
|
||||
为了避免这个问题,Arthas 3.0中使用了ognl这个更加轻量的表达式求值库来代替groovy,彻底解决了groovy引起的FGC风险。但由于这个替换,导致原来使用groovy脚本编写的自定义脚本失效。这个问题留待后续解决。
|
||||
|
||||
在3.0中,watch命令的表达式部分的书写有了一些改变,详见[这里](https://github.com/alibaba/arthas/wiki/cmds/watch)
|
||||
在3.0中,watch命令的表达式部分的书写有了一些改变,详见[这里](https://github.com/alibaba/arthas/wiki/watch)
|
||||
### 提升rt统计精度
|
||||
|
||||
Arthas 2.0中,统计rt都是以`ms`为单位,对于某些比较小的方法调用,耗时在毫秒以下的都会被认为是0ms,造成trace总时间和各方法的时间相加不一致等问题(虽然这里面确实会有误差,主要Arthas自身的开销)。Arthas 3.0中所有rt的单位统一改为使用`ns`来统计,精准捕获你的方法耗时,让0ms这样无意义的统计数据不再出现!
|
||||
|
||||
@@ -2,7 +2,6 @@ Arthas异步调用
|
||||
===
|
||||
arthas中的异步调用,使用了仿linux系统任务相关的命令。[linux任务相关介绍](https://ehlxr.me/2017/01/18/Linux-%E4%B8%AD-fg%E3%80%81bg%E3%80%81jobs%E3%80%81-%E6%8C%87%E4%BB%A4/)。
|
||||
|
||||
# 使用方式
|
||||
|
||||
## 1. 使用&在后台执行任务
|
||||
比如希望执行后台执行trace命令,那么调用下面命令
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
> * 目前需要每个命令占一行
|
||||
> * dashboard务必开启批处理模式(`-b`),指定执行次数(`-n`),否则会导致批处理脚本无法终止
|
||||
> * watch/tt/trace/monitor/stack等命令务必指定执行次数(`-n`),否则会导致批处理脚本无法终止
|
||||
> * 可以使用异步后台任务,如 `watch c.t.X test returnObj > &`,让命令一直在后台运行,通过日志获取结果,[获取更多异步任务的信息](async)
|
||||
> * 可以使用异步后台任务,如 `watch c.t.X test returnObj > &`,让命令一直在后台运行,通过日志获取结果,[获取更多异步任务的信息](async.md)
|
||||
|
||||
```
|
||||
➜ arthas git:(develop) cat /var/tmp/test.as
|
||||
|
||||
@@ -1,22 +1,37 @@
|
||||
Arthas 用户命令文档
|
||||
命令列表
|
||||
=============
|
||||
|
||||
* [仪表板/dashboard](cmds/dashboard.md)
|
||||
* [线程堆栈/thread](cmds/thread.md)
|
||||
* [JVM信息/jvm](cmds/jvm.md)
|
||||
* [查看类信息/sc](cmds/sc.md)
|
||||
* [查看方法信息/sm](cmds/sm.md)
|
||||
* [dump字节码/dump](cmds/dump.md)
|
||||
* [反编译类/jad](cmds/jad.md)
|
||||
* [查看类加载信息/classloader](cmds/classloader.md)
|
||||
* [重新加载类/redefine](cmds/redefine)
|
||||
* [方法执行监控/monitor](cmds/monitor.md)
|
||||
* [方法AOP观测/watch](cmds/watch.md)
|
||||
* [方法内部路径耗时/trace](cmds/trace.md)
|
||||
* [查看方法调用栈/stack](cmds/stack.md)
|
||||
* [方法执行记录与回放/tt](cmds/tt.md)
|
||||
* [dashboard](dashboard.md)
|
||||
* [thread](thread.md)
|
||||
* [jvm](jvm.md)
|
||||
* [sysprop](sysprop.md)
|
||||
* [getstatic](getstatic.md)
|
||||
|
||||
|
||||
* [JVM属性/sysprop](cmds/sysprop)
|
||||
* [查看类的静态属性/getstatic](cmds/getstatic)
|
||||
* [全局开关/options](options)
|
||||
|
||||
* [sc](sc.md)
|
||||
* [sm](sm.md)
|
||||
* [dump](dump.md)
|
||||
|
||||
* [jad](jad.md)
|
||||
* [classloader](classloader.md)
|
||||
* [redefine](redefine.md)
|
||||
|
||||
* [monitor](monitor.md)
|
||||
* [watch](watch.md)
|
||||
* [trace](trace.md)
|
||||
* [stack](stack.md)
|
||||
* [tt](tt.md)
|
||||
|
||||
* [options](options.md)
|
||||
|
||||
### Arthas 基础命令
|
||||
|
||||
* help——查看命令帮助信息
|
||||
* cls——清空当前屏幕区域
|
||||
* session——查看当前会话的信息
|
||||
* [reset](reset.md)——重置增强类,将被 Arthas 增强过的类全部还原,Arthas 服务端关闭时会重置所有增强过的类
|
||||
* version——输出当前目标 Java 进程所加载的 Arthas 版本号
|
||||
* quit——退出当前 Arthas 客户端,其他 Arthas 客户端不受影响
|
||||
* shutdown——关闭 Arthas 服务端,所有 Arthas 客户端全部退出
|
||||
* [keymap](keymap.md)——Arthas快捷键列表及自定义快捷键
|
||||
@@ -296,6 +296,7 @@ def setup(app):
|
||||
'url_resolver': lambda url: github_doc_root + url,
|
||||
# 'auto_toc_tree_section': 'Contents',
|
||||
'enable_eval_rst': True,
|
||||
'enable_auto_doc_ref': True,
|
||||
# 'enable_auto_doc_ref': True,
|
||||
'enable_auto_toc_tree': True,
|
||||
}, True)
|
||||
app.add_transform(AutoStructify)
|
||||
|
||||
@@ -58,7 +58,4 @@ uptime 16020s busy
|
||||
|
||||
### 截图展示
|
||||
|
||||

|
||||
|
||||
|
||||
<script src="https://asciinema.org/a/14.js" id="asciicast-14" async></script>
|
||||

|
||||
@@ -71,7 +71,7 @@ interface ScriptListener {
|
||||
|
||||
### 参数 `Advice` 说明
|
||||
|
||||
`Advice` 参数最主要是封装了通知节点的所有信息。参考[表达式核心变量](https://github.com/alibaba/arthas/wiki/cmds/advice-class)中关于该节点的描述。
|
||||
`Advice` 参数最主要是封装了通知节点的所有信息。参考[表达式核心变量](advice-class.md)中关于该节点的描述。
|
||||
|
||||
### 参数 `Output` 说明
|
||||
|
||||
@@ -19,8 +19,14 @@ Contents
|
||||
--------
|
||||
|
||||
* [安装](install-detail.md)
|
||||
* [快速入门](quick-start.md)
|
||||
* [进阶使用](advanced-use.md)
|
||||
* [命令列表](commands.md)
|
||||
* [用户案例](https://github.com/alibaba/arthas/labels/user-case)
|
||||
* [Release Notes](release-notes.md)
|
||||
* [Questions and answers](https://github.com/alibaba/arthas/labels/question-answered)
|
||||
* [Fork me at GitHub](https://github.com/alibaba/arthas)
|
||||
* [参与贡献](https://github.com/alibaba/arthas/CONTRIBUTING.md)
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,35 +1,38 @@
|
||||
Arthas Install
|
||||
=============
|
||||
|
||||
This document is for developers of recommonmark, it contans the API functions
|
||||
|
||||
## 安装
|
||||
## Linux/Unix/Mac
|
||||
|
||||
* Arthas 支持在 Linux/Unix/Mac 等平台上一键安装,请复制以下内容,并粘贴到命令行中,敲 `回车` 执行即可:
|
||||
Arthas 支持在 Linux/Unix/Mac 等平台上一键安装,请复制以下内容,并粘贴到命令行中,敲 `回车` 执行即可:
|
||||
|
||||
> curl -L TODO/install.sh | sh
|
||||
```bash
|
||||
curl -L https://alibaba.github.io/arthas/install.sh | sh
|
||||
```
|
||||
|
||||
上述命令将会下载的启动脚本文件 as.sh 到当前目录,你可以放在任何地方或将其加入到 $PATH 中;
|
||||
上述命令将会下载的启动脚本文件 `as.sh` 到当前目录,你可以放在任何地方或将其加入到 $PATH 中。
|
||||
|
||||
|
||||
* 对于 Windows 平台,你也可以下载最新的 zip 包,解压后运行 bin 目录下的 as.bat。
|
||||
## Windows
|
||||
|
||||
下载地址:TODO (点击下载推荐的 Arthas 版本)
|
||||
下载最新的 zip 包,解压后运行 bin 目录下的 `as.bat`。
|
||||
|
||||
Windows用户如果在cmd里不能正常显示颜色,可以使用这个软件:https://sourceforge.net/projects/conemu
|
||||
下载地址:[arthas-packaging-3.0.0-RC-bin.zip](https://search.maven.org/remotecontent?filepath=com/taobao/arthas/arthas-packaging/3.0.0-RC/arthas-packaging-3.0.0-RC-bin.zip)
|
||||
|
||||
Windows用户如果在cmd里不能正常显示颜色,可以使用[conemu](https://sourceforge.net/projects/conemu)。
|
||||
|
||||
## 独立的帮助文档
|
||||
|
||||
下载地址:[arthas-packaging-3.0.0-RC-doc.zip](https://search.maven.org/remotecontent?filepath=com/taobao/arthas/arthas-packaging/3.0.0-RC/arthas-packaging-3.0.0-RC-doc.zip)
|
||||
|
||||
|
||||
## 卸载
|
||||
|
||||
* 在 Linux/Unix/Mac 平台
|
||||
|
||||
删除下面文件就可以了。
|
||||
|
||||
> rm -rf ~/.arthas/ ~/.arthas_history
|
||||
删除下面文件:
|
||||
```bash
|
||||
rm -rf ~/.arthas/ ~/.arthas_history
|
||||
```
|
||||
|
||||
* Windows平台直接删除zip包和解压的文件
|
||||
|
||||
## 手动安装
|
||||
|
||||
* [手动安装步骤](manual-install.md)
|
||||
@@ -0,0 +1,142 @@
|
||||
快速入门
|
||||
===
|
||||
|
||||
## 1. 启动Demo
|
||||
|
||||
```java
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
public class Demo {
|
||||
static class Counter {
|
||||
private static AtomicInteger count = new AtomicInteger(0);
|
||||
public static void increment() {
|
||||
count.incrementAndGet();
|
||||
}
|
||||
public static int value() {
|
||||
return count.get();
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws InterruptedException {
|
||||
while (true) {
|
||||
Counter.increment();
|
||||
System.out.println("counter: " + Counter.value());
|
||||
TimeUnit.SECONDS.sleep(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
把上面的内容保存到`Demo.java`里,然后在命令行下编绎启动:
|
||||
```bash
|
||||
javac Demo.java
|
||||
java Demo
|
||||
```
|
||||
|
||||
也可以把代码保存到IDE里,然后启动。
|
||||
|
||||
## 2. 启动arthas
|
||||
|
||||
### Linux/Unix/Mac
|
||||
在命令行下面执行:
|
||||
|
||||
```bash
|
||||
./as.sh
|
||||
```
|
||||
|
||||
> 执行该脚本的用户需要和目标进程具有相同的权限。比如以`admin`用户来执行:
|
||||
> `sudo su admin && ./as.sh` 或 `sudo -u admin -EH ./as.sh`。
|
||||
> 详细的启动脚本说明,请参考[这里](start-arthas.md)。
|
||||
> 如果attatch不上目标进程,可以查看`~/logs/arthas/` 目录下的日志。
|
||||
|
||||
选择应用java进程:
|
||||
|
||||
```
|
||||
$ ./as.sh
|
||||
Arthas script version: 3.0.2
|
||||
Found existing java process, please choose one and hit RETURN.
|
||||
* [1]: 95428
|
||||
[2]: 22647 org.jetbrains.jps.cmdline.Launcher
|
||||
[3]: 21736
|
||||
[4]: 13560 Demo
|
||||
```
|
||||
|
||||
Demo进程是第4个,则输入4,再输入回车/enter。Arthas会attach到目标进程上,并输出日志:
|
||||
|
||||
```
|
||||
Connecting to arthas server... current timestamp is 1536656867
|
||||
Trying 127.0.0.1...
|
||||
Connected to 127.0.0.1.
|
||||
Escape character is '^]'.
|
||||
,---. ,------. ,--------.,--. ,--. ,---. ,---.
|
||||
/ O \ | .--. ''--. .--'| '--' | / O \ ' .-'
|
||||
| .-. || '--'.' | | | .--. || .-. |`. `-.
|
||||
| | | || |\ \ | | | | | || | | |.-' |
|
||||
`--' `--'`--' '--' `--' `--' `--'`--' `--'`-----'
|
||||
|
||||
|
||||
doc: https://alibaba.github.io/arthas
|
||||
version: 3.0.1-RC-SNAPSHOT
|
||||
pid: 13560
|
||||
timestamp: 1536656867894
|
||||
```
|
||||
|
||||
### Windows
|
||||
|
||||
打开Dos命令行窗口,在解压的arthas目录下执行`as.bat`。
|
||||
|
||||
|
||||
## 3. 查看dashboard
|
||||
|
||||
输入[dashboard](dashboard.md),按enter/回车,会展示当前进程的信息,按`ctrl+c`可以中断执行。
|
||||
|
||||
```
|
||||
$ dashboard
|
||||
ID NAME GROUP PRIORI STATE %CPU TIME INTERRU DAEMON
|
||||
17 pool-2-thread-1 system 5 WAITIN 67 0:0 false false
|
||||
27 Timer-for-arthas-dashb system 10 RUNNAB 32 0:0 false true
|
||||
11 AsyncAppender-Worker-a system 9 WAITIN 0 0:0 false true
|
||||
9 Attach Listener system 9 RUNNAB 0 0:0 false true
|
||||
3 Finalizer system 8 WAITIN 0 0:0 false true
|
||||
2 Reference Handler system 10 WAITIN 0 0:0 false true
|
||||
4 Signal Dispatcher system 9 RUNNAB 0 0:0 false true
|
||||
26 as-command-execute-dae system 10 TIMED_ 0 0:0 false true
|
||||
13 job-timeout system 9 TIMED_ 0 0:0 false true
|
||||
1 main main 5 TIMED_ 0 0:0 false false
|
||||
14 nioEventLoopGroup-2-1 system 10 RUNNAB 0 0:0 false false
|
||||
18 nioEventLoopGroup-2-2 system 10 RUNNAB 0 0:0 false false
|
||||
23 nioEventLoopGroup-2-3 system 10 RUNNAB 0 0:0 false false
|
||||
15 nioEventLoopGroup-3-1 system 10 RUNNAB 0 0:0 false false
|
||||
Memory used total max usage GC
|
||||
heap 32M 155M 1820M 1.77% gc.ps_scavenge.count 4
|
||||
ps_eden_space 14M 65M 672M 2.21% gc.ps_scavenge.time(m 166
|
||||
ps_survivor_space 4M 5M 5M s)
|
||||
ps_old_gen 12M 85M 1365M 0.91% gc.ps_marksweep.count 0
|
||||
nonheap 20M 23M -1 gc.ps_marksweep.time( 0
|
||||
code_cache 3M 5M 240M 1.32% ms)
|
||||
Runtime
|
||||
os.name Mac OS X
|
||||
os.version 10.13.4
|
||||
java.version 1.8.0_162
|
||||
java.home /Library/Java/JavaVir
|
||||
tualMachines/jdk1.8.0
|
||||
_162.jdk/Contents/Hom
|
||||
e/jre
|
||||
```
|
||||
|
||||
## 4. watch
|
||||
|
||||
通过[watch](watch.md)命令来查看`Counter.value()`函数的返回值:
|
||||
|
||||
```
|
||||
$ watch Demo$Counter value returnObj
|
||||
Press Ctrl+C to abort.
|
||||
Affect(class-cnt:1 , method-cnt:1) cost in 29 ms.
|
||||
ts=2018-09-10 17:53:11;result=@Integer[621]
|
||||
ts=2018-09-10 17:53:12;result=@Integer[622]
|
||||
ts=2018-09-10 17:53:13;result=@Integer[623]
|
||||
ts=2018-09-10 17:53:14;result=@Integer[624]
|
||||
ts=2018-09-10 17:53:15;result=@Integer[625]
|
||||
```
|
||||
|
||||
更多的功能可以查看[进阶使用](advanced-use.md)。
|
||||
@@ -3,7 +3,7 @@ Release Notes
|
||||
===
|
||||
|
||||
|
||||
2017-11-03
|
||||
v2017-11-03
|
||||
----
|
||||
|
||||
* 增加getstatic方法获取静态变量
|
||||
@@ -19,31 +19,31 @@ Release Notes
|
||||
* trace命令增加过滤jdk方法调用的功能
|
||||
|
||||
|
||||
2017-09-22
|
||||
v2017-09-22
|
||||
----
|
||||
|
||||
* 优化agent server启动时的异常信息
|
||||
* 修复异步命令的一些bug
|
||||
|
||||
2017-09-11
|
||||
v2017-09-11
|
||||
----
|
||||
|
||||
* 支持[异步后后命令](async)
|
||||
* 支持[异步后后命令](async.md)
|
||||
* jad命令优化,支持JDK8及内部类
|
||||
* 修复中文乱码问题
|
||||
|
||||
2017-05-11
|
||||
v2017-05-11
|
||||
----
|
||||
|
||||
* tt命令默认只展开1层,防止对象过大造成卡顿
|
||||
* 修复中文无法展示的问题
|
||||
|
||||
2017-05-12
|
||||
v2017-05-12
|
||||
----
|
||||
|
||||
* Arthas 3.0 release
|
||||
|
||||
2016-12-09
|
||||
v2016-12-09
|
||||
----
|
||||
|
||||
* as.sh支持-h输出帮助
|
||||
@@ -67,7 +67,7 @@ Release Notes
|
||||
* [#180] 修复第一次Attach成功之后,删除之前Arthas的安装包,重新编译打包,再次attach失败的问题
|
||||
|
||||
|
||||
2016-06-07
|
||||
v2016-06-07
|
||||
----
|
||||
|
||||
* 修复以资源方式加载spy类时出现NPE的问题
|
||||
@@ -75,7 +75,7 @@ Release Notes
|
||||
* 优化 Thread 输出,按线程名排序
|
||||
* 获取topN忙的线程时,支持指定刷新间隔
|
||||
|
||||
2016-04-08
|
||||
v2016-04-08
|
||||
----
|
||||
|
||||
* New feature:
|
||||
@@ -100,7 +100,7 @@ Release Notes
|
||||
* 修正增强BootstrapClassLoader加载的类,找不到Spy的问题
|
||||
* 修复某些配色方案下,结果显示不友好的问题
|
||||
|
||||
2016-03-07
|
||||
v2016-03-07
|
||||
----
|
||||
|
||||
* 支持一键查看当前最忙的前N个线程及其堆栈
|
||||
@@ -108,13 +108,13 @@ Release Notes
|
||||
* 一些体验优化
|
||||
|
||||
|
||||
2016-01-18
|
||||
v2016-01-18
|
||||
----
|
||||
|
||||
* 优化 jad,实时 dump 内存 byte array,并使用 jd-core-java 反编译,支持`行号显示`
|
||||
* 修复 tt 命令在监控与线程上下文相关的方法调用时,显示/重做等场景下的 bug
|
||||
|
||||
2016-01-08
|
||||
v2016-01-08
|
||||
----
|
||||
|
||||
* 修复一些 bug
|
||||
@@ -124,7 +124,7 @@ Release Notes
|
||||
* 数据统计问题修复
|
||||
* sc 查看静态变量内部层次结构
|
||||
|
||||
2015-12-29
|
||||
v2015-12-29
|
||||
---
|
||||
|
||||
* Arthas 2.0 测试版本发布!
|
||||
@@ -20,7 +20,7 @@ stack
|
||||
观察的维度也比较多,主要体现在参数 `advice` 的数据结构上。`Advice` 参数最主要是封装了通知节点的所有信息。
|
||||
|
||||
|
||||
请参考[表达式核心变量](https://github.com/alibaba/arthas/wiki/cmds/advice-class)中关于该节点的描述。
|
||||
请参考[表达式核心变量](advice-class.md)中关于该节点的描述。
|
||||
|
||||
* 特殊用法请参考:TODO middleware-container/arthas/issues/263
|
||||
* OGNL表达式官网:https://commons.apache.org/proper/commons-ognl/language-guide.html
|
||||
@@ -69,5 +69,4 @@ Arthas 支持通过 telnet 来访问服务端,如果当你手头的机器没
|
||||
### Windows 环境支持
|
||||
|
||||
* 目前 Arthas 提供了 `as.bat` 脚本,用于 Windows 环境下的诊断场景;此脚本暂时只接受一个参数 pid,即只能诊断本机上的 Java 进程;
|
||||
* 要使用 Windows 下的诊断脚本,需要手动下载整个 Arthas Zip 包,解压开后即可使用;下载地址:TODO (点击下载推荐的 Arthas 版本)
|
||||
* 另外,`as.bat` 脚本在体验方面还有一些问题,如果需要更好的体验,可以在本地使用 `as.bat pid` 启动 Arthas Server 后,然后在另外的 Linux/Mac 上使用 as.bat pid@ip:port 来远程诊断;
|
||||
@@ -1,5 +1,5 @@
|
||||
sysprop命令
|
||||
===
|
||||
sysprop
|
||||
=======================
|
||||
|
||||
> 查看当前JVM的系统属性(`System Property`)
|
||||
|
||||
@@ -18,7 +18,7 @@ sysprop命令
|
||||
sysprop production.mode true
|
||||
|
||||
WIKI:
|
||||
https://github.com/alibaba/arthas/wiki/cmds/sysprop
|
||||
https://github.com/alibaba/arthas/wiki/sysprop
|
||||
|
||||
OPTIONS:
|
||||
-h, --help this help
|
||||
@@ -21,7 +21,7 @@ trace
|
||||
观察的维度也比较多,主要体现在参数 `advice` 的数据结构上。`Advice` 参数最主要是封装了通知节点的所有信息。
|
||||
|
||||
|
||||
请参考[表达式核心变量](https://github.com/alibaba/arthas/wiki/cmds/advice-class)中关于该节点的描述。
|
||||
请参考[表达式核心变量](advice-class.md)中关于该节点的描述。
|
||||
|
||||
* 特殊用法请参考:TODO middleware-container/arthas/issues/263
|
||||
* OGNL表达式官网:https://commons.apache.org/proper/commons-ognl/language-guide.html
|
||||
@@ -16,19 +16,19 @@ tt
|
||||
对于一个最基本的使用来说,就是记录下当前方法的每次调用环境现场。
|
||||
|
||||
```java
|
||||
$ tt -t -n 3 *Test print
|
||||
Press Ctrl+D or Ctrl+X to abort.
|
||||
Affect(class-cnt:1 , method-cnt:1) cost in 115 ms.
|
||||
+----------+----------------------+------------+----------+----------+-----------------+--------------------------------+--------------------------------+
|
||||
| INDEX | TIMESTAMP | COST(ms) | IS-RET | IS-EXP | OBJECT | CLASS | METHOD |
|
||||
+----------+----------------------+------------+----------+----------+-----------------+--------------------------------+--------------------------------+
|
||||
| 1007 | 2015-07-26 12:23:21 | 138 | true | false | 0x42cc13a0 | GaOgnlUtilsTest | print |
|
||||
+----------+----------------------+------------+----------+----------+-----------------+--------------------------------+--------------------------------+
|
||||
| 1008 | 2015-07-26 12:23:22 | 143 | true | false | 0x42cc13a0 | GaOgnlUtilsTest | print |
|
||||
+----------+----------------------+------------+----------+----------+-----------------+--------------------------------+--------------------------------+
|
||||
| 1009 | 2015-07-26 12:23:23 | 130 | true | false | 0x42cc13a0 | GaOgnlUtilsTest | print |
|
||||
+----------+----------------------+------------+----------+----------+-----------------+--------------------------------+--------------------------------+
|
||||
$
|
||||
$ tt -t -n 3 *Test print
|
||||
Press Ctrl+D or Ctrl+X to abort.
|
||||
Affect(class-cnt:1 , method-cnt:1) cost in 115 ms.
|
||||
+----------+----------------------+------------+----------+----------+-----------------+--------------------------------+--------------------------------+
|
||||
| INDEX | TIMESTAMP | COST(ms) | IS-RET | IS-EXP | OBJECT | CLASS | METHOD |
|
||||
+----------+----------------------+------------+----------+----------+-----------------+--------------------------------+--------------------------------+
|
||||
| 1007 | 2015-07-26 12:23:21 | 138 | true | false | 0x42cc13a0 | GaOgnlUtilsTest | print |
|
||||
+----------+----------------------+------------+----------+----------+-----------------+--------------------------------+--------------------------------+
|
||||
| 1008 | 2015-07-26 12:23:22 | 143 | true | false | 0x42cc13a0 | GaOgnlUtilsTest | print |
|
||||
+----------+----------------------+------------+----------+----------+-----------------+--------------------------------+--------------------------------+
|
||||
| 1009 | 2015-07-26 12:23:23 | 130 | true | false | 0x42cc13a0 | GaOgnlUtilsTest | print |
|
||||
+----------+----------------------+------------+----------+----------+-----------------+--------------------------------+--------------------------------+
|
||||
$
|
||||
```
|
||||
|
||||
- 命令参数解析
|
||||
@@ -78,7 +78,7 @@ $
|
||||
|
||||
- 构成条件表达式的 `Advice` 对象
|
||||
|
||||
前边看到了很多条件表达式中,都适用了 `params[0]`,有关这个变量的介绍,请参考[表达式核心变量](https://github.com/alibaba/arthas/wiki/cmds/advice-class)
|
||||
前边看到了很多条件表达式中,都适用了 `params[0]`,有关这个变量的介绍,请参考[表达式核心变量](advice-class.md)
|
||||
|
||||
### 检索调用记录
|
||||
|
||||
@@ -27,7 +27,7 @@ watch 的参数比较多,主要是因为它能在 4 个不同的场景观察
|
||||
观察的维度也比较多,主要体现在参数 `advice` 的数据结构上。`Advice` 参数最主要是封装了通知节点的所有信息。
|
||||
|
||||
|
||||
请参考[表达式核心变量](https://github.com/alibaba/arthas/wiki/cmds/advice-class)中关于该节点的描述。
|
||||
请参考[表达式核心变量](advice-class.md)中关于该节点的描述。
|
||||
|
||||
* 特殊用法请参考:TODO middleware-container/arthas/issues/263
|
||||
* OGNL表达式官网:https://commons.apache.org/proper/commons-ognl/language-guide.html
|
||||
Reference in New Issue
Block a user