天天看點

更新 | Java開源診斷工具 Arthas 釋出v3.1.0

更新 | Java開源診斷工具 Arthas 釋出v3.1.0

Arthas 自2018年9月份上線以來

「傳送門」

,已收獲近萬個star,感謝開發者們的認可。此次Arthas 3.1.0版本的釋出,不僅帶來大家投票出來的新LOGO,還帶來強大的新功能和更好的易用性,下面一一介紹。

線上教程

在新版本Arthas裡,增加了線上教程,使用者可以線上運作Demo,一步步學習Arthas的各種用法,推薦新手嘗試:

非常歡迎大家來完善這些教程。

增加記憶體編譯器支援,線上編輯熱更新代碼

3.1.0

版本裡新增指令

mc

,不是方塊遊戲mc,而是Memory Compiler。

在之前版本裡,增加了

redefine

指令,可以熱更新位元組碼。但是有個不友善的地方:需要把

.class

檔案上傳到伺服器上。

3.1.0

版本裡,結合

jad

/

mc

redefine

可以完美實作熱更新代碼。

Arthas線上教程

裡的

UserController

為例:

  1. 使用jad反編譯代碼
    jad --source-only com.example.demo.arthas.user.UserController > /tmp/UserController.java           
  2. 使用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);
            }
        }           
  3. 使用

    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           
  4. 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

    複制
  • 支援全屏
更新 | Java開源診斷工具 Arthas 釋出v3.1.0

Docker鏡像支援

Arthas支援Docker鏡像了

  • 使用者可以很友善地診斷Docker/k8s裡的Java程序
  • 也可以很友善地把Arthas加到自己的基礎鏡像裡

參考:

https://alibaba.github.io/arthas/docker.html

重定向重新設計

之前的版本裡,Arthas的重定向是會放到一個

~/logs/arthas-cache/

目錄裡,違反直覺。

在新版本裡,重定向和Linux下面的一緻,

>

>>

的行為也和Linux下一緻。

并且,增加了

cat

pwd

指令,可以配置使用。

總結

總之,

3.1.0

版本的Arthas帶了非常多的新功能,改進了很多的使用者體驗,歡迎大家使用回報。

  • Arthas線上教程可以學到很多技巧
  • jad/mc/redefine 一條龍非常強大
  • 絲滑的自動補全值得嘗試
  • 新版本的Web console有驚奇

Release Note:

https://github.com/alibaba/arthas/releases/tag/3.1.0

本文作者:

斷嶺,社群ID hengyunabc,阿裡巴巴技術專家,目前主要負責 Arthas 開源項目的開發和社群維護。