Arthasは最初の記念日、スター16Kを開いて、私たちは何に準拠していますか?

起源

最近、私は非常に人気のタイトル、見て「私が主張どのようにオープンソースXX年、スターXXXを。」

このタイトルを参照してください、突然、ちょうど秋のシーズンに次の要約とレビューを行う、ちょうど今年、2018年9月にオープンソース以来、Arthasはを発見しました。

Arthasは

Arthasアリババは似開発者がオープンソースのJava診断ツールです。

Arthasは数のスターの歴史を想起し、それは、急速な成長を維持している画期的な16Kとなっています。

ArthasはGithubのスター履歴曲線

ユーザーのサポートのおかげで、圧力だけでなく、やる気だけではありません。昨年、オープンソース、Arthasは、我々は3点を主張してきた、リリース7のバージョンをリリースしました?:

  • 継続的にユーザビリティを向上させます
  • 増加し続けてコマンドを使用して簡単に
  • コミュニティに戻って、オープンソースコミュニティからの強さを得ます

継続的にユーザビリティを向上させます

Arthasは、最初の場所での使いやすさは、オープンソースの後、我々は次のような改善がなされています。

  • 開発Arthasはブーツ、Windowsの/ Linuxの/ Macの統一の経験のためのサポート
  • シルキー完了、参照jshell経験
  • 効率的な歴史マッチングコマンドを、Up/Down直接
  • 改善されたカテゴリ検索マッチング機能、ラムダおよび内部クラスのためのより良いサポート
  • パーフェクトリダイレクトメカニズム
  • サポートJDK 9/10/11
  • サポートドッカー
  • サポートRPM / DEBパッケージをインストール

私たちは多くの努力の下で容易に、しかし何度もユーザーエントリより困難なこと、それゆえ、私たちはインタラクティブチュートリアルのK8Sを参照していますが、Arthasはのオンラインチュートリアルを開始しました:

基本的なチュートリアルでは、あなたはどこに上級コースを介してケースArthasはトラブルシューティングの深い理解をすることができます対話型端末のエントリをステップ実行することができます。

また、ユーザの大規模な展開の便宜のために、我々は、トンネルサーバとユーザデータ報告を実現しました。

  • トンネルサーバ、統合管理エージェントの接続性を増やします
  • セキュリティ管理と制御を行うために、簡単なユーザーデータリターン機能を増やします

増加し続けてコマンドを使用して簡単に

Arthasは知られている診断ツールは、Javaアプリケーションですので、我々はスローガンの価値がある必要があります。オープンソースの後、Arthasは10の以上のコマンドを増加し続けました。

  • OGNLコマンド任意のコードの実行
  • MCラインメモリコンパイラ
  • コマンドライン熱更新コードを再定義
  • すべてのロガーの設定でアプリケーションを表示するための鍵loggerコマンド
  • syspropビューの更新システムのプロパティ
  • 環境変数を表示してsysenv
  • VMOptionは、更新されたVMオプションを表示します
  • ビューロガーロガーの設定、更新レベル
  • JMX MBeanの情報を見ます
  • heapdumpヒープメモリのスナップショット

以下は、2つの機能を強調しています。

JAD / MC /符号列ホット更新ラインを再定義

するために、オンラインチュートリアルをArthasはUserController例:

  1. コードをコンパイルするためにJADを使用して、

    jad --source-only com.example.demo.arthas.user.UserController > /tmp/UserController.java
    复制代码
  2. vimのコンパイルされたコードを使用します

    ユーザIDが1未満である場合、それは通常、nothrowに戻ります。

        @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コマンドは、コンフィギュレーションを表示することで、レベルを変更します

(二重11など)のウェブサイトにストレスの多い時代には、緩和策は、アプリケーションのログレベルERRORを修正することであります。だから、2つの問題があります。

  • ロギングシステムは、システムの設定が有効になるログに記録し、複数の複雑なアプリケーションを、持っていること?
  • どのようにオンラインレベル動的にロガーを修正?

することでlogger、コマンド、次のような、ロガーアプリケーションにおける詳細な設定情報を表示することができFileAppender、ファイル出力AsyncAppenderするかどうかblocking

[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]
复制代码

また、ラインレベルロガーを変更することができます。

[arthas@2062]$ logger --name ROOT --level debug
update logger level success.
复制代码

コミュニティに戻って、オープンソースコミュニティからの強さを得ます

67人の協力者のおかげで

Arthasは、オープンソース、67人の貢献者の合計ので、おかげで彼らの貢献を向上させます:

Arthasは協力者

コミュニティは、一連の改良を提出し、(完了していない)、下記の点のいくつか:

  • 文書の英訳のほとんどは
  • traceコマンドは、行番号をサポートしています
  • パッケージ形式のサポートRPM / DEB
  • 改善されたコマンドラインプロンプトがあります arthas@pid
  • 窓のサポートの向上
  • 増加mbeanのコマンドを
  • 改善されたWebConsoleに経験

また、情報の利用を登録する83の企業/団体があり、より多くのユーザーが登録を歓迎します。

Arthasはユーザ

保健プロジェクト洐

Arthasはに基づいて、また興学生プログラムの数を生産し、ここではそれらの2つです:

  • Bistoury:CAPEソースプロジェクトは、Arthasは統合
  • Arthasは-MVEL:フォークMVELスクリプトを使用します

ユーザーのケーススタディ

Arthasはトラブルシューティングプロセスの使用におけるユーザーの大半、調査プロセスの多くを共有し、経験を共有することが歓迎されています。

Arthasはユーザーのケーススタディ

オープンソースのフィードバック

Arthasはそれ自体が、コードのオープンソースプロジェクト、オープンソースのプロセスの多くを使用して、我々はネッティー、OGNL、CFRを与えるので、バック上流のコードを向上させるために貢献しました。

追伸

Arthasはパンフレットを行うことで、Arthasはスローガンは次のとおりです。

「バラ手、さらに悪い耐久性のある香り。」

Arthasは将来はより多くのユーザーが問題を解決するのに役立つことができるように願っています、だけでなく、開発者の大半はArthasは上のより多くの改善点や提案をしたことを願っています。

最後に、抽選は、あなたが公共の数の投稿、コメント、ストーリーとArthasは独自の背景を転送、またはArthasはへの提案を行うことができ、Arthasは賞はセーターがあります?:

Arthasはセーター

いいえ公共ありません

Javaの、春ブーツ、Arthasは、ダボに焦点を当て、コラム水平雲がリッジを破る見るへようこそ。

ボックス雲はリッジを消し

おすすめ

転載: juejin.im/post/5d8d8524518825095e3d67ce