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
、すべての例のコマンドでアプリケーションスレッドを表示します
-
することにより
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>
- ケース1:
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その他のアクションケース
複数の動作例と使用のための公式マニュアルを参照してください。