タグ:javaの、トラブルシューティング、監視、jvisualvm、jconsoleを
一つの文にまとめ:JDKは、独自の監視ツールが付属してそれらを使用する方法を説明するの下に、Javaアプリケーションのパフォーマンス監視のための、より簡単かつ直感的にjconsoleをしてjvisualvm。
1はじめに
前の記事が紹介されたコマンドラインツールをJDKへました(「関連読書」の下に以下を参照)が、彼らは比較的直感的に使用するのに十分ではない、と一般的に機械を使用する必要があり、何より簡単かつ直感的にはありませんJavaアプリケーションを監視する方法はありますか?実際には、既にそれぞれのJava GUIツールの監視を提供自体をjdk jconsole
、そしてjvisualvm
、これら2つのツールの以下の機能及び使用が記載されています。
2 jconsoleを使用
JDK JConsoleは組み込みのJavaのパフォーマンスアナライザ、JDKのインストールbinディレクトリ、Windowsで、コマンドラインから(あるjconsole.exe
)、または単にjconsole.exeをダブルクリックして実行しています。興味がある読者はのツールjconsoleを参照することができます公式文書を使用:https://docs.oracle.com/javase/8/docs/technotes/guides/management/jconsole.html
2.1 2つの接続
JConsoleのが起動すると、ローカルプロセスおよびリモート接続プロセスに接続された2つの接続を提供します。これは、直接選択するために、ローカルのJavaプロセスの一覧が表示されます。リモートJavaプロセスを監視する必要がある場合は、リモートプロセスをチェックして、次のコマンドを入力します。それはを参照してください、それ以外の場合は、JMXテクノロジリモート接続で、接続されていません、リモートJMX接続パラメータを設定し、リモートのJavaプロセスが開始に必要な公式の記事)(https://docs.oracle.com/javase/8/docs/technotes/guides/management/agent.html
パラメータは次のとおりです。
# 需要监控的服务器IP
-Djava.rmi.server.hostname=192.168.222.10
# 提供监控的java进程端口
-Dcom.sun.management.jmxremote.port=9004
# 指定后续的通讯端口,与上面一致
-Dcom.sun.management.jmxremote.rmi.port=9004
# 不使用ssl登录,若有安全需求,可设置
-Dcom.sun.management.jmxremote.ssl=false
# 不验证,若有安全需求,可设置
-Dcom.sun.management.jmxremote.authenticate=false
复制代码
下図のように:
彼らが使用していないので、なおssl
、あなたが「安全でない」に求めるメッセージが表示され、それをタップします。
2.2のjconsoleの機能の使用
プロセスを開始し、Javaを接続した後、JConsoleのインターフェイスは比較的簡単で、6つのモジュールに分割されています。
- 概要:折れ線グラフヒープ、スレッド、クラス、CPU占有率の変化を含むJavaプロセスの概要、。
- メモリ:表示ヒープおよび非ヒープメモリ使用情報、jmapのに類似してJSTAT
- スレッド:スレッド表示使用情報、同様のjstack
- クラス:クラスローディング情報表示
- VMの概要:表示JVM情報、同様のJinfoの
- MBean:MBeanが(未満で)情報を表示します
2.2.1概要
メインスタック表示の概要、基本的にあなたが直接、折れ線グラフに基づいてアプリケーション・プロファイルを表示することができ、スレッドの数グラフ行、クラス、CPU使用率を変更します。スレッド多くの活動、高いCPU使用率の高い数のためのヒープメモリの場合は、理由を見つけるために、詳細を確認するために適切な領域に直接行くことができます。さらに、対応するグラフを右クリックして、データをCSVファイルにエクスポートすることができますが、分析されます。図:
2.2.2メモリ
メモリは、主要分野の私達の監視している、あなたはGCのヒープ、非ヒープメモリ、メモリプールの状態、頻度と期間を確認することができ、GCは、手動でメモリの変化を表示することができます。図は次のとおりです。
前記図の上部は、手動でGCビューの変更を行うことができるメモリの変化(ヒープ、非ヒープ、旧領域、エデン領域、サバイバー領域、メタスペース領域、等)、のどちらを選択することができます。表示サイズ、メモリサイズ、数及び下方GC図時間の使用、ヒストグラムスタックと非スタックの変化の様子を示しています。そのため、メモリのオーバーフローのために、OOMこれらの問題は、ここを参照してくださいデータを監視するために非常に適しています。
2.2.3スレッド
オンラインアプリケーション、長い休止をスレッドに主に起因するものである:外部リソース(データベース接続、ネットワークリソース、機器のリソースなど)、Javaアプリケーションスレッドの監視を必要とする無限ループ、ロック待機(ライブロックとデッドロック)、待ちます動作条件は、以下に示すよう:
スレッドの数はスレッド上でクリックしても、デッドロックを処理するために、「デッドロックの検出」機能をクリックすることができます実行されている状態の分析を、表示変更されます。
2.2.4クラス
この機能は、主にロードされたクラスが増加している場合、我々はコードは、クラスのコードを生成し続けるかどうかを確認する必要があり、ロードされたクラスの合計数を表示するために使用されます。図は次のとおりです。
2.2.5 VMの概要
我々は、Javaアプリケーション(に起動パラメータを追加する場合JAVA_OPTS
)、このパラメータのオンラインアプリケーションの実際の使用が有効である確認したい場合は、コマンドラインツールは、我々はあなたが今、直接見ることができますJinfoの、だけでなく、システム情報を使用し、 VMのヒープパラメータに関連するクラス情報、および情報。図は次のとおりです。
3 jvisualvmの使用
そしてjconsole
同様に、JDKのbinディレクトリも提供しjvisualvm
、比較的に言えば、ツールをjvisualvm
コマンドライン(から、窓の下で、より強力なjvisualvm.exe
)、または単にダブルクリックしてjvisualvm.exe
実行を開始します。関心のある読者が参照できるjvisualvm
のツール公式文書を使用:https://docs.oracle.com/javase/8/docs/technotes/guides/visualvm/index.html
3.1 2つの接続
jconsole
同じ、jvisualvm
あなたはローカルのJavaプロセスもリモートでJavaプロセスを監視することができる監視することができます。あなたは直接リモートプロセスはまた、JMX Javaプロセスの起動パラメータを追加する必要があり、ローカルプロセスを選択することができます。
3.2 jvisualvm機能の使用
以下の機能を含む、より強力な機能を、jvisualvm:
- 仮想マシンプロセスおよびプロセス環境情報(JPS、Jinfoの)のディスプレイ構成。
- アプリケーションCPU、GC、ヒープ、メソッド領域(1.7以前)、素子間隔(JDK1.8以降)を監視し、情報をスレッド、jmapは、JSTAT、jstackの等価。
- ダンプヒープダンプ解析およびスナップショット(jmapは、jhat)。
- ほとんどの通話、最長実行方法を特定するために、分析のパフォーマンスレベルの方法を実行しています。
- オフラインプログラムのスナップショット:スナップショットを作成するために、スレッドダンプ、ダンプメモリ、およびその他の情報を設定する際に収集手順を実行しています
インターフェースの主な機能は、いくつかの概説されているモジュール、監視、スレッド、サンプラーに分割されています。
3.2.1概要
概要非常にjavaコマンドラインツールjps
とjinfo
処理して表示設定プロセス、システムプロパティ、起動パラメータ、およびすることができjconsole
、ほぼ「VMの概要」。図は次のとおりです。
3.2.2モニタリング
この機能は同等ですjconsole
「概要」機能、同じスレッドや状況のロードタイプの数の変化、CPU、ヒープの変化をグラフィカルに表示されますが、リモートでヒープ・ダンプのスナップショット(等価をダンプすることができます機能がありますjmap -dump:file=./heap.hprof PID
)保管場所のダンプを選択します。
ヒープのスナップショットをダンプし、我々は手動でファイルをダウンダウンロードし、ロードするための「ロードスナップショット」機能を使用することができますjvisualvm
(ロードされたときに、ファイルの種類である「HPROF」タイプを選択する必要があります)、ヒープメモリのさらなる分析。装填後、サマリ情報、クラスとインスタンスのメモリが含まれます、クラスはまた、あなたが特定のクラス、または多くのメモリが比較的高いかのインスタンス数の多くを発見した場合、インスタンスの特定の数を確認するために、ダブルクリックすることができ、問題を知ることができます。次のように:
3.2.3スレッド
これは、関数と等価であるjconsole
「スレッド」機能のが、より豊かな、それは各スレッドの動作状態で、実行時間をグラフ表示するだけでなく、リモートのスレッドダンプ、この機能は、実際には、することができjstack -l
機能、ダンプアウトを直接表示インターフェースにした後。次のように:
3.2.4サンプラー
サンプリングがあるjvisualvm
ユニークな機能、あなたは、時間にCPUやメモリの表示、時間からメモリ情報をサンプリングスレッド情報を、簡単にデータを分析することに集中することができ、一定期間を変更する(それがダウン方式に階層的に表示することができます実行時間、クラスの状況にメモリなど)、また、GC、メモリダンプとスレッドダンプ機能を実行しています。次のように:
4まとめ
jconsole
し、jvisualvm
2可視化ツールは、メモリ、スレッド、CPUやその他の情報のJavaアプリケーション、良いヘルパーに対処するためのJavaのオンライン問題を監視するために簡単に、より直感的な方法のための入力コマンドラインを減らすことができます。ただし、これら2つのツールを使用する前に、我々はまだJVMの蓄積、Javaのプログラムの動作機構、スレッドおよびその他の知識の一定量を必要とする、それがあることに注意すること。このヘルプを願っています。
データシート
- jconsoleの公式文書を使用してください:
https://docs.oracle.com/javase/8/docs/technotes/guides/management/jconsole.html
- 公用文書のjvisualvm:
https://docs.oracle.com/javase/8/docs/technotes/guides/visualvm/index.html
- jvisualvm文書:
https://visualvm.github.io/documentation.html
- JMXリモートモニタリング技術:
https://docs.oracle.com/javase/8/docs/technotes/guides/management/agent.html
- サンプルコード住所:
https://github.com/mianshenglee/my-example/tree/master/java-monitor-example