2018-09-19 21:17:37 +08:00
2018-09-17 22:21:49 +08:00
## Arthas
![arthas ](site/src/site/sphinx/arthas.png )
2018-09-30 19:58:57 +08:00
[![Build Status ](https://travis-ci.org/alibaba/arthas.svg?branch=master )](https://travis-ci.org/alibaba/arthas)
[![codecov ](https://codecov.io/gh/alibaba/arthas/branch/master/graph/badge.svg )](https://codecov.io/gh/alibaba/arthas)
2019-07-15 17:12:40 +08:00
[![maven ](https://img.shields.io/maven-central/v/com.taobao.arthas/arthas-packaging.svg )](https://search.maven.org/search?q=g:com.taobao.arthas)
2018-09-30 19:58:57 +08:00
![license ](https://img.shields.io/github/license/alibaba/arthas.svg )
[![Average time to resolve an issue ](http://isitmaintained.com/badge/resolution/alibaba/arthas.svg )](http://isitmaintained.com/project/alibaba/arthas "Average time to resolve an issue")
[![Percentage of issues still open ](http://isitmaintained.com/badge/open/alibaba/arthas.svg )](http://isitmaintained.com/project/alibaba/arthas "Percentage of issues still open")
2018-09-19 21:17:37 +08:00
English version goes [here ](README.md ).
2018-09-17 22:21:49 +08:00
2018-09-19 21:17:37 +08:00
`Arthas` 是Alibaba开源的Java诊断工具, 深受开发者喜爱。
2018-09-17 22:21:49 +08:00
2018-09-19 21:17:37 +08:00
当你遇到以下类似问题而束手无策时,`Arthas`可以帮助你解决:
2018-09-17 22:21:49 +08:00
2018-09-19 21:17:37 +08:00
0. 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
0. 我改的代码为什么没有执行到?难道是我没 commit? 分支搞错了?
0. 遇到问题无法在线上 debug, 难道只能通过加日志再重新发布吗?
0. 线上遇到某个用户的数据处理有问题,但线上同样无法 debug, 线下无法重现!
0. 是否有一个全局视角来查看系统的运行状况?
0. 有什么办法可以监控到JVM的实时运行状态?
2019-11-26 11:17:17 +08:00
0. 怎么快速定位应用的热点,生成火焰图?
2018-09-17 22:21:49 +08:00
2019-02-11 16:18:07 +08:00
`Arthas` 支持JDK 6+, 支持Linux/Mac/Windows, 采用命令行交互模式, 同时提供丰富的 `Tab` 自动补全功能,进一步方便进行问题的定位和诊断。
2018-09-17 22:21:49 +08:00
2019-02-18 00:45:03 +08:00
### 在线教程(推荐)
* [基础教程 ](https://alibaba.github.io/arthas/arthas-tutorials?language=cn&id=arthas-basics )
* [进阶教程 ](https://alibaba.github.io/arthas/arthas-tutorials?language=cn&id=arthas-advanced )
2018-09-19 21:17:37 +08:00
### 快速开始
2018-09-18 10:46:54 +08:00
2019-02-18 00:45:03 +08:00
#### 使用`arthas-boot`(推荐)
2018-09-18 10:46:54 +08:00
2018-11-29 16:33:17 +08:00
下载`arthas-boot.jar`,然后用`java -jar`的方式启动:
2018-09-18 10:46:54 +08:00
2018-11-29 16:33:17 +08:00
```bash
2019-10-11 15:46:58 +08:00
curl -O https://alibaba.github.io/arthas/arthas-boot.jar
2018-11-29 16:33:17 +08:00
java -jar arthas-boot.jar
2018-09-18 10:46:54 +08:00
```
2018-11-29 16:33:17 +08:00
打印帮助信息:
2018-09-18 10:46:54 +08:00
2018-11-29 16:33:17 +08:00
```bash
java -jar arthas-boot.jar -h
2018-09-18 10:46:54 +08:00
```
2018-11-29 16:33:17 +08:00
* 如果下载速度比较慢, 可以使用aliyun的镜像: `java -jar arthas-boot.jar --repo-mirror aliyun --use-http`
#### 使用`as.sh`
Arthas 支持在 Linux/Unix/Mac 等平台上一键安装,请复制以下内容,并粘贴到命令行中,敲 `回车` 执行即可:
```bash
curl -L https://alibaba.github.io/arthas/install.sh | sh
2018-09-18 10:46:54 +08:00
```
2018-11-29 16:33:17 +08:00
上述命令会下载启动脚本文件 `as.sh` 到当前目录,你可以放在任何地方或将其加入到 `$PATH` 中。
直接在shell下面执行`./as.sh`,就会进入交互界面。
2018-09-18 10:46:54 +08:00
2018-11-29 16:33:17 +08:00
也可以执行`./as.sh -h`来获取更多参数信息。
2018-09-18 10:46:54 +08:00
2018-09-19 21:17:37 +08:00
### 文档
2018-09-17 22:21:49 +08:00
2019-02-18 00:45:03 +08:00
* [在线教程(推荐) ](https://alibaba.github.io/arthas/arthas-tutorials?language=cn )
2018-09-19 21:17:37 +08:00
* [用户文档 ](https://alibaba.github.io/arthas/ )
* [安装 ](https://alibaba.github.io/arthas/install-detail.html )
2019-09-09 15:50:46 +08:00
* [下载 ](https://alibaba.github.io/arthas/download.html )
2018-09-19 21:17:37 +08:00
* [快速入门 ](https://alibaba.github.io/arthas/quick-start.html )
* [进阶使用 ](https://alibaba.github.io/arthas/advanced-use.html )
2018-10-25 15:32:30 +08:00
* [命令列表 ](https://alibaba.github.io/arthas/commands.html )
2019-09-09 15:50:46 +08:00
* [WebConsole ](https://alibaba.github.io/arthas/web-console.html )
2018-12-19 14:18:21 +08:00
* [Docker ](https://alibaba.github.io/arthas/docker.html )
2018-10-25 15:32:30 +08:00
* [用户案例 ](https://github.com/alibaba/arthas/issues?q=label%3Auser-case )
2018-12-05 02:20:44 +08:00
* [常见问题 ](https://github.com/alibaba/arthas/issues?utf8=%E2%9C%93&q=label%3Aquestion-answered+ )
2019-08-22 11:19:12 +08:00
* [编译调试/参与贡献 ](https://github.com/alibaba/arthas/blob/master/CONTRIBUTING.md )
2019-09-09 11:27:05 +08:00
* [Release Notes ](https://github.com/alibaba/arthas/releases )
2018-11-29 14:22:39 +08:00
* [QQ群/钉钉群 ](https://alibaba.github.io/arthas/contact-us.html )
2018-09-17 22:21:49 +08:00
2018-12-14 16:31:06 +08:00
Gitee文档镜像: https://arthas.gitee.io/
2018-09-19 21:17:37 +08:00
### 案例展示
2018-09-17 22:21:49 +08:00
2018-09-17 22:27:50 +08:00
#### Dashboard
2018-09-17 22:21:49 +08:00
* https://alibaba.github.io/arthas/dashboard
![dashboard ](site/src/site/sphinx/_static/dashboard.png )
2018-09-18 10:46:54 +08:00
#### Thread
2019-11-26 11:17:17 +08:00
* https://alibaba.github.io/arthas/thread
2018-09-19 21:17:37 +08:00
一目了然的了解系统的状态, 哪些线程比较占cpu? 他们到底在做什么?
2018-09-18 10:46:54 +08:00
```
$ thread -n 3
"as-command-execute-daemon" Id=29 cpuUsage=75% RUNNABLE
at sun.management.ThreadImpl.dumpThreads0(Native Method)
at sun.management.ThreadImpl.getThreadInfo(ThreadImpl.java:440)
at com.taobao.arthas.core.command.monitor200.ThreadCommand$1.action(ThreadCommand.java:58)
at com.taobao.arthas.core.command.handler.AbstractCommandHandler.execute(AbstractCommandHandler.java:238)
at com.taobao.arthas.core.command.handler.DefaultCommandHandler.handleCommand(DefaultCommandHandler.java:67)
at com.taobao.arthas.core.server.ArthasServer$4.run(ArthasServer.java:276)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Number of locked synchronizers = 1
- java.util.concurrent.ThreadPoolExecutor$Worker@6cd0b6f8
"as-session-expire-daemon" Id=25 cpuUsage=24% TIMED_WAITING
at java.lang.Thread.sleep(Native Method)
at com.taobao.arthas.core.server.DefaultSessionManager$2.run(DefaultSessionManager.java:85)
"Reference Handler" Id=2 cpuUsage=0% WAITING on java.lang.ref.Reference$Lock@69ba0f27
at java.lang.Object.wait(Native Method)
- waiting on java.lang.ref.Reference$Lock@69ba0f27
at java.lang.Object.wait(Object.java:503)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:133)
```
#### jad
2019-11-26 11:17:17 +08:00
* https://alibaba.github.io/arthas/jad
2018-09-19 21:17:37 +08:00
对类进行反编译:
2018-09-18 10:46:54 +08:00
```java
$ jad javax.servlet.Servlet
ClassLoader:
+-java.net.URLClassLoader@6108b2d7
+-sun.misc.Launcher$AppClassLoader@18b4aac2
+-sun.misc.Launcher$ExtClassLoader@1ddf84b8
Location:
/Users/xxx/work/test/lib/servlet-api.jar
/*
* Decompiled with CFR 0_122.
*/
package javax.servlet;
import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public interface Servlet {
public void init(ServletConfig var1) throws ServletException;
public ServletConfig getServletConfig();
public void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;
public String getServletInfo();
public void destroy();
}
```
2019-02-18 00:45:03 +08:00
#### mc
2019-11-26 11:17:17 +08:00
* https://alibaba.github.io/arthas/mc
2019-02-18 00:45:03 +08:00
Memory Compiler/内存编译器,编译`.java`文件生成`.class`。
```bash
mc /tmp/Test.java
```
#### redefine
2019-11-26 11:17:17 +08:00
* https://alibaba.github.io/arthas/redefine
2019-02-18 00:45:03 +08:00
加载外部的`.class`文件, redefine jvm已加载的类。
```bash
redefine /tmp/Test.class
redefine -c 327a647b /tmp/Test.class /tmp/Test\$Inner.class
```
2018-09-18 10:46:54 +08:00
#### sc
2019-11-26 11:17:17 +08:00
* https://alibaba.github.io/arthas/sc
2018-09-18 10:46:54 +08:00
2018-09-19 21:17:37 +08:00
查找JVM中已经加载的类
2018-09-18 10:46:54 +08:00
2019-02-18 00:45:03 +08:00
```bash
2018-09-18 10:46:54 +08:00
$ sc -d org.springframework.web.context.support.XmlWebApplicationContext
class-info org.springframework.web.context.support.XmlWebApplicationContext
code-source /Users/xxx/work/test/WEB-INF/lib/spring-web-3.2.11.RELEASE.jar
name org.springframework.web.context.support.XmlWebApplicationContext
isInterface false
isAnnotation false
isEnum false
isAnonymousClass false
isArray false
isLocalClass false
isMemberClass false
isPrimitive false
isSynthetic false
simple-name XmlWebApplicationContext
modifier public
annotation
interfaces
super-class +-org.springframework.web.context.support.AbstractRefreshableWebApplicationContext
+-org.springframework.context.support.AbstractRefreshableConfigApplicationContext
+-org.springframework.context.support.AbstractRefreshableApplicationContext
+-org.springframework.context.support.AbstractApplicationContext
+-org.springframework.core.io.DefaultResourceLoader
+-java.lang.Object
class-loader +-org.apache.catalina.loader.ParallelWebappClassLoader
+-java.net.URLClassLoader@6108b2d7
+-sun.misc.Launcher$AppClassLoader@18b4aac2
+-sun.misc.Launcher$ExtClassLoader@1ddf84b8
classLoaderHash 25131501
```
#### stack
2019-11-26 11:17:17 +08:00
* https://alibaba.github.io/arthas/stack
2018-09-19 21:17:37 +08:00
查看方法 `test.arthas.TestStack#doGet` 的调用堆栈:
2018-09-18 10:46:54 +08:00
2019-02-18 00:45:03 +08:00
```bash
2018-09-18 10:46:54 +08:00
$ stack test.arthas.TestStack doGet
Press Ctrl+C to abort.
Affect(class-cnt:1 , method-cnt:1) cost in 286 ms.
ts=2018-09-18 10:11:45;thread_name=http-bio-8080-exec-10;id=d9;is_daemon=true;priority=5;TCCL=org.apache.catalina.loader.ParallelWebappClassLoader@25131501
@test .arthas.TestStack.doGet()
at javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
...
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:451)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1121)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
```
#### Trace
2019-11-26 11:17:17 +08:00
* https://alibaba.github.io/arthas/trace
2018-12-03 09:40:01 +08:00
观察方法执行的时候哪个子调用比较慢:
2018-09-18 10:46:54 +08:00
![trace ](site/src/site/sphinx/_static/trace.png )
#### Watch
2019-11-26 11:17:17 +08:00
* https://alibaba.github.io/arthas/watch
2018-09-19 21:17:37 +08:00
观察方法 `test.arthas.TestWatch#doGet` 执行的入参,仅当方法抛出异常时才输出。
2018-09-18 10:46:54 +08:00
2019-02-18 00:45:03 +08:00
```bash
2018-09-18 10:46:54 +08:00
$ watch test.arthas.TestWatch doGet {params[0], throwExp} -e
Press Ctrl+C to abort.
Affect(class-cnt:1 , method-cnt:1) cost in 65 ms.
ts=2018-09-18 10:26:28;result=@ArrayList[
@RequestFacade [org.apache.catalina.connector.RequestFacade@79f922b2],
@NullPointerException [java.lang.NullPointerException],
]
```
2018-09-20 09:52:38 +08:00
#### Monitor
2019-11-26 11:17:17 +08:00
* https://alibaba.github.io/arthas/monitor
2018-09-20 09:52:38 +08:00
监控某个特殊方法的调用统计数据, 包括总调用次数, 平均rt, 成功率等信息, 每隔5秒输出一次。
2019-02-18 00:45:03 +08:00
```bash
2018-09-20 09:52:38 +08:00
$ monitor -c 5 org.apache.dubbo.demo.provider.DemoServiceImpl sayHello
Press Ctrl+C to abort.
Affect(class-cnt:1 , method-cnt:1) cost in 109 ms.
timestamp class method total success fail avg-rt(ms) fail-rate
----------------------------------------------------------------------------------------------------------------------------
2018-09-20 09:45:32 org.apache.dubbo.demo.provider.DemoServiceImpl sayHello 5 5 0 0.67 0.00%
timestamp class method total success fail avg-rt(ms) fail-rate
----------------------------------------------------------------------------------------------------------------------------
2018-09-20 09:45:37 org.apache.dubbo.demo.provider.DemoServiceImpl sayHello 5 5 0 1.00 0.00%
timestamp class method total success fail avg-rt(ms) fail-rate
----------------------------------------------------------------------------------------------------------------------------
2018-09-20 09:45:42 org.apache.dubbo.demo.provider.DemoServiceImpl sayHello 5 5 0 0.43 0.00%
```
2018-09-20 10:05:36 +08:00
#### Time Tunnel(tt)
2019-11-26 11:17:17 +08:00
* https://alibaba.github.io/arthas/tt
2018-09-20 10:05:36 +08:00
记录方法调用信息,支持事后查看方法调用的参数,返回值,抛出的异常等信息,仿佛穿越时空隧道回到调用现场一般。
2019-02-18 00:45:03 +08:00
```bash
2018-09-20 10:05:36 +08:00
$ tt -t org.apache.dubbo.demo.provider.DemoServiceImpl sayHello
Press Ctrl+C to abort.
Affect(class-cnt:1 , method-cnt:1) cost in 75 ms.
INDEX TIMESTAMP COST(ms) IS-RET IS-EXP OBJECT CLASS METHOD
-------------------------------------------------------------------------------------------------------------------------------------
1000 2018-09-20 09:54:10 1.971195 true false 0x55965cca DemoServiceImpl sayHello
1001 2018-09-20 09:54:11 0.215685 true false 0x55965cca DemoServiceImpl sayHello
1002 2018-09-20 09:54:12 0.236303 true false 0x55965cca DemoServiceImpl sayHello
1003 2018-09-20 09:54:13 0.159598 true false 0x55965cca DemoServiceImpl sayHello
1004 2018-09-20 09:54:14 0.201982 true false 0x55965cca DemoServiceImpl sayHello
1005 2018-09-20 09:54:15 0.214205 true false 0x55965cca DemoServiceImpl sayHello
1006 2018-09-20 09:54:16 0.241863 true false 0x55965cca DemoServiceImpl sayHello
1007 2018-09-20 09:54:17 0.305747 true false 0x55965cca DemoServiceImpl sayHello
1008 2018-09-20 09:54:18 0.18468 true false 0x55965cca DemoServiceImpl sayHello
```
2018-09-18 10:46:54 +08:00
#### Classloader
2019-11-26 11:17:17 +08:00
* https://alibaba.github.io/arthas/classloader
2018-09-19 21:17:37 +08:00
了解当前系统中有多少类加载器,以及每个加载器加载的类数量,帮助您判断是否有类加载器泄露。
2019-02-18 00:45:03 +08:00
```bash
2018-09-18 10:46:54 +08:00
$ classloader
name numberOfInstances loadedCountTotal
BootstrapClassLoader 1 3346
com.taobao.arthas.agent.ArthasClassloader 1 1262
java.net.URLClassLoader 2 1033
org.apache.catalina.loader.ParallelWebappClassLoader 1 628
sun.reflect.DelegatingClassLoader 166 166
sun.misc.Launcher$AppClassLoader 1 31
com.alibaba.fastjson.util.ASMClassLoader 6 15
sun.misc.Launcher$ExtClassLoader 1 7
org.jvnet.hk2.internal.DelegatingClassLoader 2 2
sun.reflect.misc.MethodUtil 1 1
```
2018-09-17 22:21:49 +08:00
2018-09-17 22:27:50 +08:00
#### Web Console
2018-09-17 22:21:49 +08:00
* https://alibaba.github.io/arthas/web-console
2018-09-18 10:46:54 +08:00
![web console ](site/src/site/sphinx/_static/web-console-local.png )
2018-09-19 21:17:37 +08:00
2019-11-28 10:48:28 +08:00
#### Profiler/FlameGraph/火焰图
2019-11-26 11:17:17 +08:00
* https://alibaba.github.io/arthas/profiler
```bash
$ profiler start
Started [cpu] profiling
```
```
$ profiler stop
profiler output file: /tmp/demo/arthas-output/20191125-135546.svg
OK
```
通过浏览器查看profiler结果:
![](site/src/site/sphinx/_static/arthas-output-svg.jpg)
2018-09-20 15:15:08 +08:00
2018-12-17 15:11:45 +08:00
### Known Users
2018-12-18 10:54:33 +08:00
如果您在使用Arthas, 请让我们知道, 您的使用对我们非常重要: https://github.com/alibaba/arthas/issues/111 (按登记顺序排列)
2018-12-17 15:11:45 +08:00
![Alibaba ](static/alibaba.png )
![Alipay ](static/alipay.png )
![Aliyun ](static/aliyun.png )
![Taobao ](static/taobao.png )
![Tmall ](static/tmall.png )
2018-12-17 17:03:28 +08:00
![微医 ](static/weiyi.png )
2018-12-18 17:37:09 +08:00
![卓越教育 ](static/zhuoyuejiaoyu.png )
2018-12-19 14:04:58 +08:00
![狐狸金服 ](static/hulijingfu.png )
2018-12-20 17:05:55 +08:00
![三体云 ](static/santiyun.png )
2018-12-21 16:33:57 +08:00
![证大文化 ](static/zhengdawenhua.png )
2019-06-26 23:55:49 +08:00
![连连支付 ](static/lianlianpay.png )
2018-12-21 17:12:32 +08:00
![Acmedcare+ ](static/acmedcare.png )
2018-12-21 17:31:56 +08:00
![好慷 ](static/homeking365_log.png )
2018-12-21 17:28:43 +08:00
![来电科技 ](static/laidian.png )
2018-12-23 01:33:06 +08:00
![四格互联 ](static/sigehulian.png )
2018-12-24 11:22:37 +08:00
![ICBC ](static/icbc.png )
2018-12-25 14:38:47 +08:00
![陆鹰 ](static/luying.png )
2018-12-28 14:09:53 +08:00
![玩友时代 ](static/wangyoushidai.png )
2019-01-03 17:52:59 +08:00
![她社区 ](static/tashequ.png )
2019-01-07 16:33:18 +08:00
![龙腾出行 ](static/longtengchuxing.png )
2019-01-09 11:01:37 +08:00
![foscam ](static/foscam.png )
2019-01-10 12:45:40 +08:00
![二维火 ](static/2dfire.png )
2019-01-16 23:08:58 +08:00
![lanxum ](static/lanxum_com.png )
2019-01-17 18:37:51 +08:00
![纳里健康 ](static/ngarihealth.png )
2019-01-18 01:20:09 +08:00
![掌门1对1 ](static/zhangmen.png )
![offcn ](static/offcn.png )
2019-01-21 14:31:51 +08:00
![sia ](static/sia.png )
2019-01-25 11:53:46 +08:00
![振安资产 ](static/zhenganzichang.png )
2019-02-13 19:05:15 +08:00
![菠萝 ](static/bolo.png )
2019-02-14 14:53:18 +08:00
![中通快递 ](static/zto.png )
2019-02-15 16:02:49 +08:00
![光点科技 ](static/guangdian.png )
2019-02-19 10:20:19 +08:00
![广州工程技术职业学院 ](static/gzvtc.jpg )
2019-02-25 14:12:28 +08:00
![mstar ](static/mstar.png )
2019-02-27 16:03:08 +08:00
![xwbank ](static/xwbank.png )
2019-02-28 16:18:11 +08:00
![imexue ](static/imexue.png )
2019-03-04 11:34:27 +08:00
![keking ](static/keking.png )
![secoo ](static/secoo.jpg )
![viax ](static/viax.png )
![yanedu ](static/yanedu.png )
2019-03-13 00:32:13 +08:00
![duia ](static/duia.png )
2019-03-18 22:51:17 +08:00
![哈啰出行 ](static/hellobike.png )
2019-03-26 20:01:08 +08:00
![hollycrm ](static/hollycrm.png )
![citycloud ](static/citycloud.jpg )
2019-04-02 11:30:14 +08:00
![yidianzixun ](static/yidianzixun.png )
2019-04-09 14:35:25 +08:00
![神州租车 ](static/zuche.png )
2019-04-10 14:20:31 +08:00
![天眼查 ](static/tianyancha.png )
![商脉云 ](static/anjianyun.png )
![三新文化 ](static/sanxinbook.png )
2019-04-19 11:46:40 +08:00
![雪球财经 ](static/xueqiu.png )
![百安居 ](static/bthome.png )
2019-04-25 11:00:18 +08:00
![安心保险 ](static/95303.png )
2019-04-30 17:50:46 +08:00
![杭州源诚科技 ](static/hzyc.png )
2019-05-05 14:45:07 +08:00
![91moxie ](static/91moxie.png )
2019-05-17 10:58:06 +08:00
![智慧开源 ](static/wisdom.png )
2019-05-20 11:17:08 +08:00
![富佳科技 ](static/fujias.png )
2019-05-20 14:42:41 +08:00
![鼎尖软件 ](static/dingjiansoft.png )
2019-05-23 15:27:08 +08:00
![广通软件 ](static/broada.png )
2019-06-03 10:51:06 +08:00
![九鼎瑞信 ](static/evercreative.jpg )
![小米有品 ](static/xiaomiyoupin.png )
2019-06-10 15:38:02 +08:00
![欧冶云商 ](static/ouyeel.png )
2019-06-27 00:11:27 +08:00
![投投科技 ](static/toutou.png )
![饿了么 ](static/ele.png )
![58同城 ](static/58.png )
2019-06-27 16:22:46 +08:00
![上海浪沙 ](static/runsa.png )
2019-07-15 17:12:40 +08:00
![符律科技 ](static/fhldtech.png )
![顺丰科技 ](static/sf.png )
![新致软件 ](static/newtouch.png )
2019-07-22 11:07:31 +08:00
![北京华宇信息 ](static/thunisoft.png )
2019-08-05 14:34:05 +08:00
![太平洋保险 ](static/cpic.png )
![旅享网络 ](static/risingch.png )
![水滴互联 ](static/shuidihuzhu.png )
2019-08-07 15:25:14 +08:00
![贝壳找房 ](static/ke.png )
2019-08-12 17:48:28 +08:00
![嘟嘟牛 ](static/dodonew.png )
2019-08-14 10:13:19 +08:00
![云幂信息 ](static/yunmixinxi.png )
2019-08-19 11:44:11 +08:00
![随手科技 ](static/sui.png )
![妈妈去哪儿 ](static/mamaqunaer.jpg )
![云实信息 ](static/realscloud.png )
![BBD数联铭品 ](static/bbdservice.png )
![伙伴集团 ](static/zhaoshang800.png )
![数梦工场 ](static/dtdream.png )
2019-09-04 15:04:17 +08:00
![安恒信息 ](static/dbappsecurity.png )
2019-09-23 16:21:31 +08:00
![亚信科技 ](static/asiainfo.png )
![云舒写 ](static/yunshuxie.png )
![微住 ](static/iweizhu.png )
![月亮小屋 ](static/bluemoon.png )
2019-10-17 16:35:02 +08:00
![大搜车 ](static/souche.png )
![今日图书 ](static/jinritushu.png )
![竹间智能 ](static/emotibot.png )
![数字认证 ](static/bjca.png )
2019-10-18 13:59:17 +08:00
![360金融 ](static/360jinrong.png )
2019-11-11 10:49:10 +08:00
![安居客 ](static/anjuke.jpg )
2019-11-08 14:40:25 +08:00
![qunar ](static/qunar.png )
2019-11-14 14:28:58 +08:00
![ctrip ](static/ctrip.png )
2019-11-27 13:50:06 +08:00
![途牛 ](static/tuniu.png )
2019-12-19 16:01:01 +08:00
![多点 ](static/dmall.jpg )
![转转 ](static/zhuanzhuan.jpg )
![金蝶 ](static/kingdee.jpg )
![华清飞扬 ](static/sincetimes.jpg )
![神奇视角 ](static/fasterar.jpg )
![南京昂克软件 ](static/angke.jpg )
![网盛生意宝 ](static/netsun.jpg )
![北京登云美业网络 ](static/idengyun.jpg )
![Holder ](static/holder.png )
2020-03-02 16:36:13 +08:00
![立林科技 ](static/leelen.png )
2020-03-26 20:40:42 +08:00
![爱成长 ](static/aichengzhang.png )
2020-03-26 23:43:21 +08:00
![嘉云数据 ](static/clubfactory.png )
2020-03-27 15:09:49 +08:00
![百草味 ](static/bcw.png )
2020-03-27 16:59:01 +08:00
![青岛优米 ](static/youmi.png )
![紫光软件 ](static/unis.png )
![拓保软件 ](static/tobosoft.png )
![海信集团 ](static/hisense.png )
![小红唇 ](static/xiaohongchun.png )
2020-03-27 17:07:59 +08:00
![上海恺英 ](static/kaiying.png )
![上海慧力 ](static/xiaohuasheng.png )
![上海喔噻 ](static/shouqingba.png )
![vipkid ](static/vipkid.png )
2020-03-27 17:38:04 +08:00
![宇中科技 ](static/yuzhong.png )
2019-11-27 13:50:06 +08:00
2019-08-22 11:11:49 +08:00
### 洐生项目
* [Bistoury: 一个集成了Arthas的项目 ](https://github.com/qunarcorp/bistoury )
* [一个使用MVEL脚本的fork ](https://github.com/XhinLiang/arthas )
2018-09-20 15:15:08 +08:00
2020-03-26 20:33:05 +08:00
2018-12-17 15:11:45 +08:00
### Credit
2019-01-11 15:22:23 +08:00
#### Contributors
感谢所有Contributors!
< a href = "https://github.com/alibaba/arthas/graphs/contributors" > < img src = "https://opencollective.com/arthas/contributors.svg?width=890&button=false" / > < / a >
#### Projects
2018-09-20 15:15:08 +08:00
* [greys-anatomy ](https://github.com/oldmanpushcart/greys-anatomy ): Arthas代码基于Greys二次开发而来, 非常感谢Greys之前所有的工作, 以及Greys原作者对Arthas提出的意见和建议!
* [termd ](https://github.com/termd/termd ): Arthas的命令行实现基于termd开发, 是一款优秀的命令行程序开发框架, 感谢termd提供了优秀的框架。
* [crash ](https://github.com/crashub/crash ): Arthas的文本渲染功能基于crash中的文本渲染功能开发, 可以从[这里](https://github.com/crashub/crash/tree/1.3.2/shell)看到源码, 感谢crash在这方面所做的优秀工作。
2018-09-27 15:18:24 +08:00
* [cli ](https://github.com/eclipse-vertx/vert.x/tree/master/src/main/java/io/vertx/core/cli ): Arthas的命令行界面基于vert.x提供的cli库进行开发, 感谢vert.x在这方面做的优秀工作。
2019-02-18 00:25:34 +08:00
* [compiler ](https://github.com/skalogs/SkaETL/tree/master/compiler ) Arthas里的内存编绎器代码来源
* [Apache Commons Net ](https://commons.apache.org/proper/commons-net/ ) Arthas里的Telnet Client代码来源
2020-04-10 11:14:40 +08:00
* [async-profiler ](https://github.com/jvm-profiling-tools/async-profiler ) Arthas's profiler 命令.
2018-09-27 15:18:24 +08:00
### 仓库镜像
2018-12-03 09:40:01 +08:00
* [码云Arthas ](https://gitee.com/arthas/arthas )