阿里内部的那个牛逼带闪电的Java诊断工具终于开源了

在阿里巴巴内部,有很多自研工具供开发者使用,其中有一款工具,是几乎每个JAVA开发都使用过的工具,那就是Arthas,这是一款Java诊断工具,是一款牛逼带闪电的工具 。该工具已于2018年9月份开源 。
GitHub地址:https://github.com/alibaba/arthas用户文档:https://alibaba.github.io/arthas/

阿里内部的那个牛逼带闪电的Java诊断工具终于开源了

文章插图
在日常开发中,你是否遇到过以下问题:
这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
是否有一个全局视角来查看系统的运行状况?
有什么办法可以监控到JVM的实时运行状态
以上问题,通通可以通过Arthas来进行问题诊断!!!是不是很好很强大Arthas支持JDK 6+,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断 。
 
Arthas安装1、使用arthas-boot安装
下载arthas-boot.jar,然后用java -jar的方式启动:
wget https://alibaba.github.io/arthas/arthas-boot.jarjava -jar arthas-boot.jar打印帮助信息:
java -jar arthas-boot.jar -h如果下载速度比较慢,可以使用aliyun的镜像:
java -jar arthas-boot.jar --repo-mirror aliyun --use-http2、使用as.sh安装
Arthas 支持在 linux/Unix/mac 等平台上一键安装,请复制以下内容,并粘贴到命令行中,敲 回车 执行即可:
curl -L https://alibaba.github.io/arthas/install.sh | sh上述命令会下载启动脚本文件 as.sh 到当前目录,你可以放在任何地方或将其加入到 $PATH 中 。
直接在shell下面执行./as.sh,就会进入交互界面 。
也可以执行./as.sh -h来获取更多参数信息 。
 
快速入门1. 启动Demo
wget https://alibaba.github.io/arthas/arthas-demo.jarjava -jar arthas-demo.jararthas-demo是一个简单的程序,每隔一秒生成一个随机数,再执行质因式分解,并打印出分解结果 。
2. 启动arthas
在命令行下面执行:
wget https://alibaba.github.io/arthas/arthas-boot.jarjava -jar arthas-boot.jar
  • 执行该程序的用户需要和目标进程具有相同的权限 。比如以admin用户来执行:sudo su admin && java -jar arthas-boot.jar 或 sudo -u admin -EH java -jar arthas-boot.jar 。
  • 如果attatch不上目标进程,可以查看~/logs/arthas/ 目录下的日志 。
  • 如果下载速度比较慢,可以使用aliyun的镜像:java -jar arthas-boot.jar --repo-mirror aliyun --use-http
  • java -jar arthas-boot.jar -h 打印更多参数信息 。
选择应用java进程:
$ $ java -jar arthas-boot.jar* [1]: 35542[2]: 71560 arthas-demo.jarDemo进程是第2个,则输入2,再输入回车/enter 。Arthas会attach到目标进程上,并输出日志:
[INFO] Try to attach process 71560[INFO] Attach process 71560 success.[INFO] arthas-client connect 127.0.0.1 3658,---. ,------. ,--------.,--. ,--. ,---. ,---./ O| .--. ''--. .--'| '--' | / O' .-'| .-. || '--'.' | | | .--. || .-. |`. `-.| | | || || | | | | || | | |.-' |`--' `--'`--' '--' `--' `--' `--'`--' `--'`-----'wiki: https://alibaba.github.io/arthasversion: 3.0.5.20181127201536pid: 71560time: 2018-11-28 19:16:24$3. 查看dashboard
输入dashboard,按enter/回车,会展示当前进程的信息,按ctrl+c可以中断执行 。
$ dashboardID NAME GROUP PRIORI STATE %CPU TIME INTERRU DAEMON17 pool-2-thread-1 system 5 WAITIN 67 0:0 false false27 Timer-for-arthas-dashb system 10 RUNNAB 32 0:0 false true11 AsyncAppender-Worker-a system 9 WAITIN 0 0:0 false true9 Attach Listener system 9 RUNNAB 0 0:0 false true3 Finalizer system 8 WAITIN 0 0:0 false true2 Reference Handler system 10 WAITIN 0 0:0 false true4 Signal Dispatcher system 9 RUNNAB 0 0:0 false true26 as-command-execute-dae system 10 TIMED_ 0 0:0 false true13 job-timeout system 9 TIMED_ 0 0:0 false true1 main main 5 TIMED_ 0 0:0 false false14 nioEventLoopGroup-2-1 system 10 RUNNAB 0 0:0 false false18 nioEventLoopGroup-2-2 system 10 RUNNAB 0 0:0 false false23 nioEventLoopGroup-2-3 system 10 RUNNAB 0 0:0 false false15 nioEventLoopGroup-3-1 system 10 RUNNAB 0 0:0 false falseMemory used total max usage GCheap 32M 155M 1820M 1.77% gc.ps_scavenge.count 4ps_eden_space 14M 65M 672M 2.21% gc.ps_scavenge.time(m 166ps_survivor_space 4M 5M 5M s)ps_old_gen 12M 85M 1365M 0.91% gc.ps_marksweep.count 0nonheap 20M 23M -1 gc.ps_marksweep.time( 0code_cache 3M 5M 240M 1.32% ms)Runtimeos.name Mac OS Xos.version 10.13.4java.version 1.8.0_162java.home /Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home/jre


推荐阅读