ArthasはJavaは診断ツールと恋に落ちました

1. Arthasはそれとは何ですか?

ArthasはのGithubの記述からの抜粋:

Arthasは、オープンソースのJavaのアリババにより診断ツールです。

Arthasは、開発者はコードを変更するか、サーバを再起動することなく、Javaアプリケーションのための生産の問題をトラブルシューティングすることができます。

効果その:Arthasはアリはすぐに問題を見つけるためにオンラインサーバーを再起動したりすることなく、開発者がコードを変更するのを助けることができるオープンソースのJava診断ツールです。

それは本当に私たちのプログラマに大きなメリットである聞こえます。たとえば、私たちは、春のブートアプリケーションが実行を開始午前1時のために毎日のcron cronジョブを持っていますが、テストすることが非常に簡単に、私たちは常に正しい、のcron QCテストを修正するための時間を作ることができない状況に遭遇しましたか?これは便利なテスト妹ですが、私たちの開発時間と、反復ああの数を招待しますが!我々のニーズを満たすことができる最後にArthasは?行きます...

Arthasはツアーを入れます

2.1インストールArthasは

  • 実施例1:ダウンロードArthasは-boot.jarパケットモード
wget https://alibaba.github.io/arthas/arthas-boot.jar
复制代码

あなたの現在のディレクトリにこの時点で持っていますarthas-boot.jarパッケージを。

次Arthasはしてみてください:

# 启动arthas,会进入命令行交互状态
java -jar arthas-boot.jar

# 查看arthas命令手册
java -jar arthas-boot.jar -h
复制代码

  • オプション2:(as.shインストールによってArthasはを強くお勧めします
# 该命令会下载 as.sh 到当前目录下
curl -L https://alibaba.github.io/arthas/install.sh | sh
复制代码

次Arthasはしてみてください:

# 启动arthas,会进入命令行交互状态
./as.sh

# 查看arthas命令手册
./as.sh -h
复制代码

開始2.2

以下は、私たちを示しas.shメインに。

まず、我々はArthasはを開始し、我々は単に数1入力し、私の現在のサーバーのみで一つのアプリケーション上で、検出された現在、サーバー上にデプロイされたアプリケーションに表示され、アプリケーションはと対話することができます:

2.2.1基本的なコマンド

  • することによりdashboard、リアルタイムアプリケーション監視データコマンドを表示することができます

  • することによりthread、すべての例のコマンドでアプリケーションスレッドを表示します

前記第一のスレッドIDなど。

  • することによりthread threadId、指定されたスレッドのステータス情報コマンドを表示します

    • 例えば、我々は、スレッドの状態506については、スレッドIDを見てみたいです。

    • それは、コマンドラインの相互作用であるので、もちろん、また、ストリーミングパイプライン動作をサポートしています。

  • watchコマンドメソッドパラメータ、戻り値、および例外情報を表示します

  • することによりsc、コマンド情報の種類を表示するには

    • によってsc yourFullClassName

    • よるsc -d yourFullClassName*JVMクラス情報の負荷を見に行きます

    • よるsc *yourClassName*JVMクラス情報の負荷を見に行きます

  • することでsm、クラス情報コマンド方式を閲覧

    • ケース1: sm java.math.RoundingMode

    • ケース2: sm -d java.math.RoundingMode

    • ケース3: sm java.math.RoundingMode <init>

2.2.2ハイライトコマンド

  • することによりjad yourFullClassName、完全なコード情報の逆コンパイルを見に行きます

  • することでjad --source-only yourFullClassName > /tmp/yourClassName.java、一時ディレクトリにコードを逆コンパイルエクスポート

  • vim /tmp/yourClassName.java編集コードを変更

  • sc -d *yourClassName | grep classLoaderHashロード取得yourClassNameのクラスローダを

  • mc -c classLoaderHash /tmp/yourClassName.java -d /tmp再使用して、同じクラスローダクラス(MC:メモリコンパイラ)修飾を再コンパイル

  • することによりredefine /tmp/yourFullClassName.class、新たなコンパイル済みのクラスファイルをリロード

2.2.3その他のアクションケース

複数の動作例と使用のための公式マニュアルを参照してください。

参考資料

おすすめ

転載: juejin.im/post/5cf93512f265da1b6b1cc71f