これらの4つの問題のシーンの調査との理由から、あなたがしますか?専門家はすぐにArthasはの原因を突き止めるために使用しているかを見てください!

lALPGqGoY4ELYOHNAg7NBDg_1080_526.png
著者| [チャン・チー(チュー長官)]

ラインは見に行でもコードの行に対して、頭痛が発生した場合には?実際には非常にスタイリッシュではない、ああねえ〜

1.jpeg

諺にように、「トラブルシューティングは心配、Arthasは忙しいあなたを支援していない。」今日、彼女の母親は、もはや心配する必要は何を言わないし、私のトラブルシューティングJavaの診断アーティファクト--Arthas!

Arthasはとは何ですか?

タブ補完の富を提供することをさらに配置し、問題の診断を容易にするために備えながら、Arthasは、オンライン診断ツール、コマンドラインインタラクティブモード、オンラインサポートWeb端末診断、オープンソースです。これは、より多くの年のGitHub星200万よりもオープンソースであり、またはR&Dの弟アリの99%は、Java究極の診断ツールを使用しています!比較的簡単な使用にダウンロードするよりも、私は、開発者がクラウドツールキットIDEプラグインArthasはの使用を介したキーのリモート診断機能を実現しようとすることができるお勧めします。

強力かつ機能豊富なArthasはおかげで、Arthasは想像を超えて行うことができましょう。ここではいくつかの一般的な使用に名前を付けるために、追加的な使用シナリオがArthasは精通した後、自分で探索することができます。

  • システムの健全性を表示するには、グローバルな視点がありますか?
  • なぜCPUは増加しており、そして最終的にどこCPUを取っていますか?
  • それをデッドロック実行している複数のスレッドがありますか?それがブロックされているかどうか
  • それは長い時間がかかるところそれは、実行するのに長い時間がかかりますか?それを監視するには?
  • ジャーパッケージがロードされた元のクラス?なぜ例外に関連するカテゴリの様々な報告しますか?
  • 私はなぜない実行するためにコードを変更しましたか?それは私がコミットしなかっただろうか?支店がミスをしましたか?
  • スタックオンラインデバッグを取得し、それが唯一のログを追加することにより、再リリース?
  • JVMのリアルタイムステータスの監視を実行する方法はありますか?

コマンドArthasは、その関数公式文書以下に詳述するが、最近のいくつかの使用シナリオについて教えてくださいます。

シナリオ1:位置決め性能のボトルネックの圧力測定

サーバー要求は通常正常です。圧力試験、依存サービスは、データベースがボトルネックが、マシンのCPUすべてバラ色に到達しなかった場合は、なぜですか?

jstackコマンドで、唯一私が殺人犯をキャッチしていない、特定の時間にスタックを確認してください。

スレッドは、現在のスレッドの情報を表示するスレッドのスタックを参照してください。

3 -i 10000 -nスレッドが10秒忙しい3つのスレッドをカウントし、そのスタックを印刷することができ、問題を見つけることは容易です。識別された最終的な問題は比較的簡単である:クラス名、メソッド名と行番号を含むログの場所情報を印刷します。

通常、新しい新しいThrowableを()によって、メソッド名を取得する動的なコード情報、行番号、 - >のThrowableのスタックを印刷 - >スタック撮影した最上位のサービスコード - クラス>スプリット文字列、情報法、行番号などを取得印刷スタックのパフォーマンスの損失が比較的大きいです。

2.png

シーン2:時折タイムアウト検出

そこいつもの数倍から時折時間に実行時間は、でしたが、ログ通常の通話リンクホークアイを見ては完全にOK、単一のステップまたはデータベース操作HSFコールが特に遅いされていません。

時間のかかるの様々な監視統計のTimeディメンション、非常に通常、rtのスパイクを見つけることができません。

思想は、問題ログかもしれないが、サポートする証拠はありません。

トレースコマンド時間のかかるの各ステップを監視するため、および条件式で使用することができ、より多くのXXミリ秒よりも消費する際の詳細なログを印刷します。

マシンを見ると、そのようなことは静かですバックとして、コマンドを入力します。RTスパイクは、再度、時間のかかるの分布をキャプチャすることが発生する場合。

3.png

Arthasはの結果によって取得し、問題ログの印刷を見つけます。同期ログが非同期ログに変更した後、問題が解決されます。

シーン3デバッグ?ダイナミックなバイトコード生成とは何をすることになったら?

JSONはとか、引用符なしのデジタル出力をシリアライズする際の問題の前に私が遭遇しました。デバッグ、様々な時間、コードを見て、ASMの方法によって発見されたが動的クラスのバイトコード・シーケンスを生成しました。これは完全に放棄して、デバッグは、問題を見つけることができませんでした。この問題を回避するために、その時点で別の方法。

この質問を回すには、我々は、時計のコマンドと組み合わせて、バイトコードを動的に生成されたクラスコンパイル、ArthasはのコマンドをJADトラブルシューティングを見つけることができます。

JAD -クラスをロードした逆コンパイルソースコードの指定

4.png

また、することができMC(Menoryコンパイラ)再定義  コマンドラインホットアップデートコードは、探検する歓迎します。

でも全能であれば、これらの機能では?いや、いや、お読みください。

悪いことを行うにはシーン4

トラブルシューティングのプロセスで、コンソールにログ出力を発見し、性能の損失が比較的大きいです。それを解決するために緊急のリリースせずにどのような方法は、ありますか?

まず、対応するクラスを見つけます

sc -d ch.qos.logback.core.ConsoleAppender
 
class-info       ch.qos.logback.core.ConsoleAppender
  code-source       /home/admin/.../lib/logback-core-1.2.3.jar
  name             ch.qos.logback.core.ConsoleAppender
  isInterface       false
  isAnnotation     false
  isEnum           false
  isAnonymousClass false
  isArray           false
  isLocalClass     false
  isMemberClass     false
  isPrimitive       false
  isSynthetic       false
  simple-name       ConsoleAppender
  modifier         public
  annotation
  interfaces
  super-class       +-ch.qos.logback.core.OutputStreamAppender
                      +-ch.qos.logback.core.UnsynchronizedAppenderBase
                        +-ch.qos.logback.core.spi.ContextAwareBase
                          +-java.lang.Object
  class-loader     +-com.taobao..LaunchedURLClassLoader@58dad04a
                      +-sun.misc.Launcher$AppClassLoader@18b4aac2
                        +-sun.misc.Launcher$ExtClassLoader@58ceff1
  classLoaderHash   5f205aa
复制代码

そして、属性情報クラスを取得し、アペンダのリストを見つけます

ognl -c 5f205aa '@org.slf4j.LoggerFactory@getLogger("root").aai.appenderList'
复制代码

アペンダ標準出力を削除

1ognl -c 5f205aa '@org.slf4j.LoggerFactory@getLogger("root").aai.appenderList.remove(0)'
复制代码

アーティファクト:炎マップ

トラブルシューティングパフォーマンスの問題アーティファクトがある場合:炎チャート図によって炎が、時間をかけて各メソッドの時間のかかる統計がそれを見ることは明らかです。

5.png

開始Arthasは

方法1:ツールキットは、クラウド経由でキーリモート診断Arthasは達成

クラウドToolkitは、より効率的に、テスト、診断およびデプロイするアプリケーションを開発するために、ヘルプの開発者にアリ無料ローカルIDEプラグインをリリースしています。プラグを通じ、地元は(などECS、EDAS、ACK、ACRとアプレットの雲、)任意のサーバ、でもクラウドにキーの配置を適用することが可能であり、また、診断ダボツール、ターミナルターミナル、ファイルアップロード機能評価Arthasは構築されており、 MySQLのアクチュエータおよびその他のツール。だけでなく、のIntelliJ IDEAの主流のバージョンがあり、他のEclipse、Pycharm、Mavenのバージョンなどがあります。

IDEAプラグインは、ダウンロードクラウドツールキットArthasは使用することをお勧めします。t.tb.cn/2A5CbHWveOXを...

第二の方法:直接ダウンロード

住所:github.com/alibaba/art ...

Arthasは懸賞エッセイがスタート!

6.png

Javaの診断アーティファクトArthasは過ごすために開始するために多くの開発者を有効にするには、この時間は、私たちは共同JetBrainsの懸賞エッセイ活動とこれらすべての年についての話あなたとArthasは間の事ことを発表しました。執筆活動と3月26日の第一段階 - 4月26日手持ちのフォロー書き込み活動は2020年12月まで続きます。

コンテンツオリエンテーションの推奨事項:

  • 使用Arthasは問題のトラブルシューティングをしなければなりませんでした
  • Arthasは、ソースコードを解釈します
  • Arthasは上のアドバイス
  • Arthasはに関連する他のコンテンツ

ステップ3は、エッセイを提出します

  1. ArthasはArthasは、直接またはクラウドTookitを経由して、
  2. あなたの経験は、デンバーのコミュニティに掲載された記事に編成されます。
  3. :以下のフォームに記入することでalibabadeveloper.mikecrm.com/9khcRrs

あなたは贈り物を取得します

  • 学生の提出要件を満たすために記事を提出する場合は、それぞれの子Arthasは最も価値のあるユーザー(ランダムな贈り物)のコピーを受信します、アモイ人形、Arthasはステッカー、Tシャツアリ、パックの周囲のジェットブレーンズは含まれています。
  • 最も人気のある記事は、Lynxは、ウィザードを取得TOP3第一段階。
  • 年間トップ20記事、キーボードへのアクセスと桜クーポンジェットブレーンズは、隣接する他のパックが含まれています。

あなたは名誉を取得します

現物ボーナスに加えて、あなたも取得します

  • アリババクラウドネイティブ公共数字とArthasは技術コミュニティのホームページあなたの記事を披露すると、著者は、より多くの開発者があなたを理解するように、モジュールを記述。
  • コミュニティのインストラクターとして共有するコミュニティの日常業務に関わる社会貢献Arthasは、参加Arthasは、オンライン/オフラインの活動になるために。

アリババクラウドネイティブ懸念マイクロサービス、サーバレス、コンテナ、サービスメッシュ及び他の技術分野、クラウドネイティブ人気の技術動向を中心に、ネイティブの大規模な着陸の練習を曇らせるが、ほとんどは開発者のネイティブクラウド技術界を理解してください。」

おすすめ

転載: juejin.im/post/5e86e71ee51d4546d439684f