Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱。在线排查问题,无需重启;动态跟踪Java代码;实时监控JVM状态。
详细教程请前往官网学习
1.下载:
wget https://alibaba.github.io/arthas/arthas-boot.jar
2.启动:
java -jar arthas-boot.jar
运行Arthas,第三行开始会显示一个列表,输入列表里需要监听的JAVA进程对应的数字(想进如第三个进程,就输入3,回车。),会自动进入Arthas交互命令行.
3.进入Arthas:
选择你想要诊断的进程(ps -ef| grep java 查询一下进程),回车即可。
4.help命令查看更多功能:
如果不知道命令的用法,可以输入相应的命令后加参数–help,比如可以看一下thread命令的用法:
5.常用指令:
5.1 cpu占用过高
thread命令把所有线程按照cpu占用率从高到低列出来。 通过thread加线程id输出改线程的栈信息,快速定位问题。
5.2死锁
还是用thread命令,参数是-b,jstack工具检测死锁功能相似。
5.3内存泄漏
dashboard命令来动态查看内存情况 类似jmap工具,如果需要排查内存泄露,直接用heapdump命令把内存快照dump出来,
heapdump --live /root/jvm.hprof
拿到dump文件,用JDK自带的Java性能分析工具,在JDK的bin目录下jvisualvm解析一下就可以了。
5.4 classloader
查看当前系统中有多少类加载器,以及每个加载器加载的类数量,帮助判断是否有类加载器泄露.
5.5 jad 命令(反编译源代码)
反编译出已加载类的源代码,如果没有线下环境,我们可以在线上查看到底哪行代码出问题。
jad com.hessianhealth.web.controller.gene.GeneController
总结:
科技改变生活,马云爸爸手下的团队确实在造福开发者,还有很多强大的功能比如使用watch和trace做线上断点调试等等,自己下载一个试试吧。
|