博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java开源诊断工具 Arthas 发布v3.1.0
阅读量:6437 次
发布时间:2019-06-23

本文共 1852 字,大约阅读时间需要 6 分钟。

Arthas

Arthas 自2018年9月份上线以来「传送门」,已收获近万个star,感谢开发者们的认可。此次Arthas 3.1.0版本的发布,不仅带来大家投票出来的新LOGO,还带来强大的新功能和更好的易用性,下面一一介绍。

在线教程

在新版本Arthas里,增加了在线教程,用户可以在线运行Demo,一步步学习Arthas的各种用法,推荐新手尝试:

Arthas基础教程

Arthas进阶教程
非常欢迎大家来完善这些教程。

增加内存编译器支持,在线编辑热更新代码

3.1.0版本里新增命令mc,不是方块游戏mc,而是Memory Compiler。

在之前版本里,增加了redefine命令,可以热更新字节码。但是有个不方便的地方:需要把.class文件上传到服务器上。

在3.1.0版本里,结合jad/mc/redefine 可以完美实现热更新代码。

以 Arthas在线教程 里的UserController为例:

使用jad反编译代码

jad --source-only com.example.demo.arthas.user.UserController > /tmp/UserController.java

使用vim编译代码

当 user id 小于1时,也正常返回,不抛出异常:

@GetMapping("/user/{id}")public User findUserById(@PathVariable Integer id) {    logger.info("id: {}" , id);    if (id != null && id < 1) {        return new User(id, "name" + id);        // throw new IllegalArgumentException("id < 1");    } else {        return new User(id, "name" + id);    }}

使用mc命令编译修改后的UserController.java

$ mc /tmp/UserController.java -d /tmp

Memory compiler output:
/tmp/com/example/demo/arthas/user/UserController.class
Affect(row-cnt:1) cost in 346 ms
使用redefine命令,因为可以热更新代码

$ redefine /tmp/com/example/demo/arthas/user/UserController.class

redefine success, size: 1
丝滑的自动补全
在新版本里,改进了很多命令的自动补全,比如 watch/trace/tt/monitor/stack等。

下面是watch命令的第一个Tab补全结果,用户可以很方便的一步步补全类名,函数名:

$ watch

com. sun. javax. ch. io. demo. jdk. org. java.
另外,新增加了 jad/sc/sm/redefine 等命令的自动补全支持,多按Tab有惊喜。

新版本的Web console

新版本的Web Console切换到了xtermd.js,更好地支持现代浏览器。

支持Ctrl + C复制

支持全屏
web console

Docker镜像支持

Arthas支持Docker镜像了

用户可以很方便地诊断Docker/k8s里的Java进程

也可以很方便地把Arthas加到自己的基础镜像里
参考:

重定向重新设计

之前的版本里,Arthas的重定向是会放到一个~/logs/arthas-cache/目录里,违反直觉。

在新版本里,重定向和Linux下面的一致,>/>>的行为也和Linux下一致。

并且,增加了 cat/pwd命令,可以配置使用。

总结

总之,3.1.0版本的Arthas带了非常多的新功能,改进了很多的用户体验,欢迎大家使用反馈。

Arthas在线教程可以学到很多技巧

jad/mc/redefine 一条龙非常强大
丝滑的自动补全值得尝试
新版本的Web console有惊奇
Release Note:

本文作者:

断岭,社区ID hengyunabc,阿里巴巴技术专家,目前主要负责 Arthas 开源项目的开发和社区维护。

转载地址:http://dikwo.baihongyu.com/

你可能感兴趣的文章
转:面对JXTA,我迷茫了
查看>>
IT人必须学会的职场四原则
查看>>
Android之剪贴薄实现
查看>>
WPF数据模板和控件模板
查看>>
Sonix SN9P701 OCR点读笔二维码识别源码
查看>>
oracle 单引号 双引号 连接符
查看>>
[golang] implicit assignment of unexported field
查看>>
数据结构 练习 20-查找 算法
查看>>
hadoop集群虚拟机配置
查看>>
如何使用fileupload工具来实现文件上传
查看>>
EZ GUI Button和Checkbox创建
查看>>
指针[收藏]
查看>>
审批流程设计方案-介绍(一)
查看>>
JAVA进阶----主线程等待子线程各种方案比较(转)
查看>>
PowerDesigner(九)-模型文档编辑器(生成项目文档)(转)
查看>>
Python多进程编程
查看>>
使Eclipse下支持编写HTML/JS/CSS/JSP页面的自动提示。
查看>>
IIS_右键点击浏览网站没有反应
查看>>
Struts2的OGNL遍历数组、List、简单的Map
查看>>
POJ训练计划1035_Spell checker(串处理/暴力)
查看>>