Arthasオープン1周年、GitHub Star 16 K、私たちは何を続けていますか?


に縁を付ける
最近1つのとても流行するタイトルを见て、《开源XX年、star XXX、私はどのように坚持します》.そんなタイトルを見てふと気づいたのが、アーツが2018年9月にオープンしてからちょうど1年、ちょうどこの秋晴れの時期にまとめて振り返ること.
ArthasはAlibabaオープンソースのJava診断ツールであり、開発者に愛されている.
Github:[https://github.com/alibaba/ar...[1]](https://yq.aliyun.com/go/arti...ドキュメント:[https://alibaba.github.io/arthas[2]](https://yq.aliyun.com/go/arti...
Arthas Star数の歴史を振り返ると、急速な成長を続け、現在16 Kを突破している.
ユーザーのサポートに感謝します.プレッシャーであり、原動力でもあります.過去1年間、Arthasは7つのReleaseバージョンを発表しました.私たちは3つの点を堅持してきました.
  • 使いやすさを継続的に改善
  • 使いやすいコマンドを増やし続ける
  • オープンソースコミュニティから力を得て、コミュニティ
  • に報いる
    使いやすさの継続的な改善
    Arthasは使いやすさを第一にしてきましたが、オープンソースの後、以下の改善を行いました.
  • arthas bootを開発し、Windows/Linux/Mac統一体験
  • をサポート
  • 糸滑りの自動補完は、jshellの体験
  • を参考にした.
  • 効率的な履歴コマンドマッチング、Up/Down直通
  • はクラス検索マッチング機能を改善し、lambdaと内部クラス
  • をよりよくサポートする.
  • リダイレクトメカニズム
  • を完備する
  • JDK 9/10/11
  • をサポート
  • Docker
  • をサポート
  • rpm/debパッケージインストール
  • をサポート
    使いやすさに工夫を凝らしましたが、ユーザーが入りにくいことが多いことがわかりました.そのため、k 8 sのInteractive Tutorialを参考に、Arthasのオンラインチュートリアルを発表しました.
  • Arthas基礎教程[3
  • ]
  • Arthasステップアップチュートリアル[4]
  • 基本的なチュートリアルでは、インタラクティブな端末で一歩一歩入門することができ、チュートリアルを進めることで、Arthasが問題を調査するケースを深く理解することができます.
    また、ユーザーの大規模な導入を容易にするために、tunnel serverとユーザーデータリターン機能を実現しました.
  • tunnel serverを追加し、Agent接続
  • を統一的に管理する
  • ユーザーデータリターン機能を増加し、安全管理制御
  • を便利にする.
    使いやすい命令を増やし続ける
    ArthasはJavaアプリケーション診断の利器と呼ばれているので、私たちは自分でこのスローガンに耐えなければなりません.オープンソースの後、Arthasは10以上のコマンドを追加し続けました.
  • ognlコマンド任意のコード実行
  • mcラインメモリコンパイラ
  • redefineコマンドラインホットアップデートコード
  • loggerコマンドワンタッチアプリケーション内のすべてのlogger構成
  • を表示
  • sysprop更新System Properties
  • を表示
  • sysenv環境変数
  • を表示
  • vmoption表示更新VM option
  • logger logger構成を表示しlevel
  • を更新
  • mbean JMX情報
  • を表示
  • heapdumpスタックメモリスナップショット
  • 2つの機能を重点的に紹介します.
    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
    loggerコマンドで構成を表示しlevelを変更する
    Webサイトのプレッシャーが大きい場合(ダブル11など)、アプリケーションのログレベルをERRORに変更する緩和策があります.では、2つの問題があります.
  • 複雑なアプリケーションのログシステムが複数ある可能性がありますが、どのログシステム構成が本当に有効になりますか?
  • loggerのレベルをオンラインで動的に変更するにはどうすればいいですか?loggerコマンドを使用して、FileAppenderが出力したファイル、AsyncAppenderがblockingしているかどうかなど、アプリケーションのloggerの詳細な構成情報を表示できます.
  • [arthas@2062]$ logger
     name                                   ROOT
     class                                  ch.qos.logback.classic.Logger
     classLoader                            sun.misc.Launcher$AppClassLoader@2a139a55
     classLoaderHash                        2a139a55
     level                                  INFO
     effectiveLevel                         INFO
     additivity                             true
     codeSource                             file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
     appenders                              name            CONSOLE
                                            class           ch.qos.logback.core.ConsoleAppender
                                            classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
                                            classLoaderHash 2a139a55
                                            target          System.out
                                            name            APPLICATION
                                            class           ch.qos.logback.core.rolling.RollingFileAppender
                                            classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
                                            classLoaderHash 2a139a55
                                            file            app.log
                                            name            ASYNC
                                            class           ch.qos.logback.classic.AsyncAppender
                                            classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
                                            classLoaderHash 2a139a55
                                            blocking        false
                                            appenderRef     [APPLICATION]
    
    loggerのレベルをオンラインで変更することもできます.
    [arthas@2062]$ logger --name ROOT --level debug
    update logger level success.
    オープンソースコミュニティから力を得て、コミュニティに報いる
    67名様ありがとうございます
    Arthasオープンソース以来、67人のContributorsが貢献した改善に感謝しています.
    Arthas Contributorsコミュニティは、いくつかの点(不完全)を以下に示す一連の改善を提出しました.
  • 英語ドキュメントの大部分を翻訳した
  • traceコマンドサポート行番号
  • パッケージ形式はrpm/deb
  • をサポートする
  • 改善コマンドラインプロンプトはarthas@pid
  • windowsのサポートを改善
  • mbeanコマンド
  • を追加
  • webconsoleの体験を改善
  • また、83社/組織が利用情報を登録しており、より多くのユーザーが登録することを歓迎しています.
    洐生プロジェクト
    Arthasに基づいて、いくつかの
  • Bistoury:Arthasを統合したプロジェクト
  • arthas-mvel:MVELスクリプトを使用するfork
  • ユーザー・ケースの共有
    多くのユーザーがArthasを使用して問題を調査する過程で、多くの調査過程と心得を共有し、皆さんが共有することを歓迎します.
    フィードバックオープンソース
    Arthas自体は多くのオープンソースプロジェクトのコードを使用しており,オープンソースの過程でnetty,ognl,cfrなどにコードの改善,上流へのフィードバックに貢献した.
    後記
    Arthasの宣伝パンフレットを作るとき、Arthasの宣伝語は:
    「バラの手を贈ると、長い間香りが残る」
    Arthasが将来、より多くのユーザーの問題解決に役立つことを望んでおり、多くの開発者がArthasに対してより多くの改善と提案を提出することを望んでいます.
    参考資料
    [1]Arthas Github: https://github.com/alibaba/arthas[2]Arthas文書: https://alibaba.github.io/arthas[3]Arthas基本チュートリアル: https://alibaba.github.io/arthas/arthas-tutorials?language=cn&id=arthas-basics[4]Arthasステップアップチュートリアル:https://alibaba.github.io/arthas/arthas-tutorials?language=cn&id=arthas-advanced
    アリ雲双は11億元の補助金を事前に受け取り、iPhone 11 Proの抽出に入った.https://www.aliyun.com/1111/2019/home?utm_content=g_1000083110
    本文の作者:ミドルウェアのお兄さん
    原文を読む
    本文は雲栖コミュニティのオリジナル内容で、許可を得ずに転載してはならない.