Java開源診斷工具 Arthas 發佈v3.1.0

Arthas

Arthas 自2018年9月份上線以來「傳送門」,已收穫近萬個star,感謝開發者們的承認。這次Arthas 3.1.0版本的發佈,不只帶來你們投票出來的新LOGO,還帶來強大的新功能和更好的易用性,下面一一介紹。html

在線教程

在新版本Arthas裏,增長了在線教程,用戶能夠在線運行Demo,一步步學習Arthas的各類用法,推薦新手嘗試:java

很是歡迎你們來完善這些教程。git

增長內存編譯器支持,在線編輯熱更新代碼

3.1.0版本里新增命令mc,不是方塊遊戲mc,而是Memory Compiler。github

在以前版本里,增長了redefine命令,能夠熱更新字節碼。可是有個不方便的地方:須要把.class文件上傳到服務器上。web

3.1.0版本里,結合jad/mc/redefine 能夠完美實現熱更新代碼。docker

以 Arthas在線教程 裏的UserController爲例:vim

  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複製
  • 支持全屏

web console

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 開源項目的開發和社區維護。

 

原文連接 更多技術乾貨 請關注阿里云云棲社區微信號 :yunqiinsight

相關文章
相關標籤/搜索