java在线诊断神器-Arthas-试用札记
笔者闲逛开源中国,偶遇“开源中国 2018 年度榜单之国产新秀榜”之top1-Arthas,遂观之。阅后兴奋不已,此乃上古神器也。神器流落凡间,岂可枉顾之?盘它。。。
一 Arthas 何许神器?
神器铸造者如是说:
当你遇到以下相似问题而束手无策时,Arthas可以帮助你处理:
这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
线上遇到某个客户的数据解决有问题,但线上同样无法 debug,线下无法重现!
能否有一个全局视角来查看系统的运行状况?
有什么办法可以监控到JVM的实时运行状态?
呐尼?如是而言,生产环境的问题岂非暴露无遗?再也不用为了定位生产环境问题而抓耳挠腮?不用再为了加个日志而打包上线重启?so crazy!
二 Arthas安装篇
wget https://alibaba.github.io/arthas/arthas-boot.jar
下载
执行:java -jar arthas-boot.jar
简单到想哭 有木有。
(ps:假如使用高大上的mac,可以使用homebrew安装wget后安装。)
当然想要全量下载安装也是可以的 arthas下载
三 小试牛刀
3.1启动arthas:java -jar arthas-boot.jar
image.png
3.2选择需要查看的进程:2
image.png
3.3当前进程的信息,按ctrl+c可以中断执行dashboard
image.png
可以看到进程里运行中的线程,内存、jvm及GC信息。
四 牛逼闪闪的功能
4.1 jad反编译指定已加载类的源码
命令:thread 1
查看线程信息,找到类路径demo.MathGame
image.png
反编译类:jad demo.MathGame
image.png
反编译指定函数:jad demo.MathGame main
再也不用为了反编译代码,从服务器拉下jar包找破解软件进行反编译了有没有。。。
4.2 方法执行数据观测
watch可以观察到指定方法的调用情况。能观察到的范围为:返回值、抛出异常、入参,通过编写 OGNL 表达式进行对应变量的查看。
观察方法出参和返回值:watch demo.MathGame primeFactors "{params,returnObj}" -x 2
image.png
4.3 redefine
加载外部的.class文件,redefine jvm已加载的类
该功能可以使得在不替换jar和重启的情况下,通过替换需要的class文件来实现调试,比方追加日志。
关于该功能的使用,Arthas实践–使用redefine排查应用奇怪的日志来源的讲述颇为直观,可参考之。
4.5除上述外还有trace命令可以查看方法内部调用路径,并输出方法路径上的每个节点上耗时;sc命令查看JVM已加载的类信息等等,诸君可细细把玩,盘它或者有受益。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » java在线诊断神器-Arthas-试用札记