パフォーマンス テスト - Tomcat の監視と調整: Jconsole の監視

JConsole のグラフィカル ユーザー インターフェイスは、Java Management Extensions (JMX) 仕様に準拠した監視ツールです。JConsole は Java 仮想マシン (Java VM) を使用して、Java プラットフォーム上で実行されているアプリケーションのパフォーマンスとリソース消費情報を提供します。Java Platform, Standard Edition (Java SE Platform) 6 では、この記事に示すように、JConsole は Windows や GNOME デスクトップと同様の現在のルック アンド フィールに更新されました (他のプラットフォームには標準の Java グラフィックスのルック アンド フィールが適用されます)。ドキュメント スクリーンショットは、Windows XP で実行されているインターフェイスの例です。

Jconsole は実行可能ファイルです。Java ルート ディレクトリに bin ファイルがあります。jconsole ファイルはこのファイルの下にあります。クリックしてプログラムを直接実行します。jconsole のパスが環境変数として設定されている場合は、直接実行できます。スタートメニューから開く runコマンドにjconsoleコマンドを直接入力してjconsoleプログラムを実行する 環境変数として設定されていない場合はフルパスを記述する必要があります。

JConsole プログラムを開始するには 2 つの方法があります: 1 つはパラメーターを使用して開始する方法、もう 1 つはパラメーターを使用せずに開始する方法です。

パラメータを指定して JConsole を起動する場合、2 つの状況があります: 1 つはローカルの進行状況を監視する場合、もう 1 つはリモート監視する場合です。

ローカル監視のコマンド形式は以下のとおりです。

JConsole processID

processID は、アプリケーションのプロセス ID (PID) を指します。アプリケーションの PID は、次の方法を使用して決定できます。

● UNIX または Linux システムでは、ps コマンドを使用して、実行中の Java インスタンスの PID を検索できます。

● Windows システムでは、タスク マネージャーを使用して java または javaw プロセスの PID を見つけることができます。

例: JConsole プログラムを監視し、JConsole のプロセス番号が 5604 の場合、次のコマンドを使用して JConsole を開始できます。

JConsole 5604

リモート監視のコマンド形式は以下のとおりです。

JConsole 主机名:portNum

ホスト名は監視する必要があるホスト、portNum は Java 仮想マシンの起動時に指定した JMX エージェントのポート番号です。

注: JConsole を使用してローカル アプリケーションを監視することは、プロトタイプを開発および作成する場合には非常に便利ですが、Jconsole 自体も大量のシステム リソースを消費するため、運用環境ではお勧めできません。

パラメータ コマンドを指定せずに Jconsole プログラムを実行すると、図 10-6 に示すように、[Jconsole 新しいリンク] ダイアログ ボックスが表示されます。

図 10-6 Jconsole の新しい接続

Jconsole には、ローカルプロセス監視とリモート監視の 2 つの監視方法があります。

●ローカル プロセス監視を選択します。下のリスト ボックスに JConsole プログラムと同じユーザーのプロセスがリストされます。いずれかのプロセスを選択し、接続ボタンをクリックして、監視用のメイン インターフェイスに入ります。

●必要な内容を含む遠隔監視を選択します。JMX エージェントのホスト名とポート番号、およびサーバーにアクセスするためのユーザー名とパスワード。

接続が成功すると、図 10-7 に示すように、監視インターフェイスがポップアップ表示されます。

図 10-7 監視メインインターフェイス

監視内容には主に、概要、メモリ、スレッド、クラス、VM 概要、MBean の6 つの側面が含まれます。

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036

概要情報

概要情報監視インターフェイスには、主にヒープ メモリ使用量、スレッド数、Java VM にロードされたクラス、CPU 使用量が含まれます。各ビューを選択して監視する時間セグメントを切り替え、ビュー内のデータをカンマ区切り (CSV) ファイルに保存します。

記憶情報

図 10-8 に示すように、メモリ監視情報は主にメモリ消費量とメモリ プール情報を提供します。

図 10-8 メモリ監視情報

メモリ監視情報は主に、ヒープ メモリと非ヒープ メモリの 2 種類のメモリ消費情報を監視します。これら 2 種類のメモリは、Java 仮想マシンによって管理される 2 種類のメモリでもあり、両方とも Java 仮想マシンの起動時に作成されます。

● ヒープ メモリは実行時のデータ領域であり、Java VM のすべてのクラス インスタンスと配列がメモリを割り当てます。これは固定サイズまたは可変サイズのヒープです。

● 非ヒープ メモリには、すべてのスレッドおよび Java 仮想マシン内での処理または最適化に必要な共有メソッドが含まれます。クラス構造、実行中の定数プール、フィールドとメソッドのデータ、およびメソッドとコンストラクターのコードが格納されます。メソッド領域は、特定の実装に応じて、論理的にヒープの一部になります。実装によっては、Java 仮想マシンはガベージ コレクションや圧縮を実行しない場合があります。ヒープ メモリと同様に、メソッド領域は固定サイズでも可変サイズでもよく、メソッド領域内のメモリは連続している必要はありません。

Java 仮想マシンは、メソッド領域に加えて、非ヒープ メモリである内部処理または最適化を実行する必要がある場合があります。たとえば、ジャストインタイム (JIT) コンパイラは、Java 仮想マシンの高性能コードから変換されたマシン コードを格納するためのメモリを必要とします。

Jconsole が提供する監視対象ヒープおよび非ヒープ メモリには、主に次のカテゴリが含まれます。

Eden Space メモリ プール: ほとんどのオブジェクトが初期化されるときに割り当てられるメモリ プール、

Survivor Space メモリ プール: このメモリ プールに含まれるオブジェクトは、Eden Space メモリ プールをリサイクルした後に生き残ったオブジェクトです、

Tenured Gen メモリ プール: このメモリ プールに含まれるオブジェクトメモリ プールは、Survivor Space メモリ プールに一定期間存在していたオブジェクトです。

コード キャッシュ メモリ プール:HotSpot Java VM のコード キャッシュと、コードのコンパイルと保存によって消費されるメモリが含まれます。Perm

Gen[shared-rw] メモリプール: Perm Gen メモリ プール内 読み取り/書き込み領域;

Perm Gen [shared-ro] メモリ プール: Perm Gen メモリ プール内の読み取り専用領域;

Perm Gen メモリ プール: このメモリ プールには、仮想マシン自体によって反映されたデータが含まれます、クラスやメソッド、Java 仮想マシンなど。これらのクラス データ領域は実行時に共有され、共有領域には読み取り専用と読み取り/書き込みの 2 つのモードがあります。

グラフのドロップダウン リスト ボックスでは、監視する別のメモリ プールを選択し、現在のメモリ プールによって消費されているメモリ情報を取得できます。また、ヒープと非ヒープのアイコンが右下隅に表示されます。グラフが表示されると、メモリプールグラフの表示内容も変わりますが、赤色で表示されている場合は、メモリ使用量がメモリしきい値を超えていることを意味します。

メモリー・プールとメモリー・マネージャーは、Java 仮想マシンのメモリー・システム内の重要なリンクです。

メモリ プールは、Java 仮想マシンによって管理されるメモリ領域を表します。Java 仮想マシンには少なくとも 1 つのメモリ プールがあります。実行中にメモリ プールを作成または削除する場合があります。メモリ プールはヒープ メモリまたは非ヒープ メモリに属する​​ことができます。

メモリ マネージャは 1 つ以上のメモリ プールを管理します。ガベージ コレクタは、到達不能なオブジェクトによって使用されたメモリの再利用を担当するメモリ マネージャです。Java 仮想マシンには 1 つ以上のメモリ マネージャが存在する場合があります。実行中に、メモリ マネージャを追加または削除できます。 、メモリ プールは複数のメモリ マネージャによって管理できます。

メモリ使用量の詳細が「詳細」ボックスに表示されます。主に次の情報が含まれます。

●使用済み: 現在使用されているメモリの量 (使用済み、使用可能または使用不可のメモリを含む)。

●割り当て: 割り当てられたメモリは、Java 仮想マシンが必要とする使用量を確保する必要があります。コミットされたメモリは時間の経過とともに変化する可能性があります。Java 仮想マシンはシステム メモリを解放する可能性があり、割り当てられたメモリは最初の起動時に割り当てられたメモリよりも少なくなる場合があります。割り当てられたメモリ量が必要なメモリ量以上です。

●最大値: メモリ管理で利用可能な最大メモリ。この値は変化しているか不確実です。Java 仮想マシンによって使用されるメモリが増加し続け、割り当てられたメモリ量を超えると、メモリの割り当ては失敗します。

●GC 時間: 累積ガベージ コレクション時間と合計呼び出し時間複数の行が含まれる場合があり、各行は Java 仮想マシンのガベージ コレクター アルゴリズムによって消費された時間を表します。

ガベージ コレクション (GC ガベージ コレクト) は、Java 仮想マシンが、参照されなくなったオブジェクトによって占有されていたメモリを解放するメカニズムです。通常、現在アクティブなオブジェクトは「生きている」、参照できないオブジェクトは「死んでいる」と見なされます。オブジェクトの場合、ガベージ コレクションは、「死んだ」オブジェクトによって占有されているメモリを解放するプロセスです。ガベージ コレクションのアルゴリズムとパラメータは、パフォーマンスに大きな影響を与えます。

Java HotSpot 仮想マシンのガベージ コレクターは生成 GC を使用します。生成 GC の利点のほとんどは、次の概要と一致します。

これらは、イテレータやローカル変数などの短期間のオブジェクトを作成したり、
高レベルの永続オブジェクトなどの長期間のオブジェクトを作成したりします。

世代別 GC は複数の世代に分割され、各世代に 1 つ以上のメモリ プールが割り当てられます。世代が割り当てられたメモリを使用すると、仮想マシン上でローカル GC (マイナー コレクションとも呼ばれます) が実行され、メモリ プールがメモリ プールを再利用します。死んだオブジェクトによって使用されるメモリ。通常、この部分的な GC は完全な GC よりもはるかに高速です。

Java HotSpot 仮想マシンは、若い世代(「ナーサリー」と呼ばれることもあります) と古い世代の 2 つの世代を定義します。若い世代には 1 つの「エデン スペース」と 2 つの「生存者スペース」が含まれます。最初、VM はすべてのオブジェクトを「」に配置します。マイナー GC (マイナー GC) を実行すると、VM は残りのオブジェクトを「エデン スペース」から「サバイバー スペース」に転送し、仮想長期生存時間オブジェクトを作成します。古い世代がいっぱいになると、完全な GC が実行されます。完全な GC にはすべての生きたオブジェクトが含まれるため、非常に遅くなる傾向があります。永続的な世代には、仮想的な反映が含まれています。クラスやメソッドなど、マシン自体のすべてのデータ。

ガベージ コレクターがボトルネックになっている場合は、世代サイズをカスタマイズすることでパフォーマンスを向上させることができます。

スレッド情報

スレッドの監視情報を図10-9に示します

図10-9 スレッド監視情報

すべてのアクティブなスレッドが左下隅の「スレッド」リストに表示されます。指定したスレッドを検索する必要がある場合は、「フィルター」フィールドに検索するスレッドを入力し、スレッドを選択すると、現在のスレッドが表示されます。右側のテキスト ボックスに、名前、ステータス、スタック トレース情報が表示されます。

上のスレッド番号ビューには、アクティブなスレッドの現在の数が動的に表示されます。これには主に、アクティブなスレッドの現在の数とスレッドのピーク数の 2 つの部分が含まれます。

スレッド監視ビューには、デッドロックスレッドを検出する機能もあります。[デッドロック検出]ボタンをクリックすると、いずれかのスレッドオブジェクト監視でデッドロックが発生した場合、デッドロックが発生したスレッドのID番号が表示され、現在のスレッドの情報が表示されます。表示される。

Java 仮想マシンのスレッド情報のすべてのプロパティと操作は、[MBean] タブで監視できます。

クラス情報

クラスの監視情報を図10-10に示します

図10-10 種類監視情報

[ロードされたクラスの数] ビューには、ロードされたクラスの合計数と現在ロードされているクラスが表示されます。実際、赤い線はロードされたクラスの合計数を示し、青い線は現在ロードされているクラスを表します。詳細には、現在ロードされているクラス、ロードされているクラスの合計数、およびアンロードされているクラスの合計数が表示されます。

VMの概要情報

VMサマリの監視情報を図10-11に示します

図 10-11 VM の概要情報

VM 概要情報には主に、概要情報、スレッドとクラス情報、メモリ情報、オペレーティング システム情報、その他の情報の5 つの側面の情報が含まれます。

概要セクションの情報には主に次の情報が含まれます。

接続名: モニタリングに接続するときのプロセス PID 情報、
実行時間: Java 仮想マシンが最初から実行されている合計時間、
処理 CPU 時間: Java VM の開始、消費された CPU 時間の合計、
合計コンパイル時間: JIT コンパイルに費やされた累積時間。

スレッドとクラスの情報には主に次の情報が含まれます。

アクティブなスレッド: 現在アクティブなスレッド;
ピーク: スレッドの最大数;
デーモン スレッド: バックグラウンドで実行中の
スレッド; 開始されたスレッドの合計数: これまでに開始されたスレッドの数;
現在ロードされているクラス: 現在実行中のプロセスロードされたクラス;
ロードされたクラスの合計数: これまでにロードされたクラスの合計数;
アンロードされたクラスの合計数: これまでにアンロードされたクラスの合計数;

メモリ情報には主に次の情報が含まれます。

現在のヒープ サイズ: 現在のヒープによって割り当てられたメモリ領域、
割り当てられたメモリ: 現在割り当てられているメモリ サイズ、
ヒープ サイズの最大値: ヒープに割り当てられているメモリの最大値、
保留終了操作: 現在一時的に中断されているオブジェクト;
ガベージ コレクション コレクタ: ガベージ コレクタは、コレクタの名前、コレクタによって収集されたメモリの量、およびこれらのメモリの収集に費やした時間を記述します。

オペレーティング システム情報には、主にオペレーティング システム名、アーキテクチャ、割り当てられた仮想メモリ、合計物理メモリ、使用可能な物理メモリ、合計スワップ スペース、および使用可能なスワップ スペースが含まれます。

その他の情報には主に以下の情報が含まれます。

VM パラメータ: アプリケーションを通じて Java 仮想マシンに渡されるパラメータを表示します。これらのパラメータには、main メソッドのパラメータは含まれません。
クラス パス: クラス ファイルを検索するためにシステム クラス ローダによって使用されるクラス パス。
ライブラリ パス:ライブラリのロード時の検索 パス リスト;
ブート クラス パス: ブート クラス ローダーがクラス ファイルを検索するパスのリスト。

MBean情報

「MBeans」タブには、MBeanサーバーによって登録されたMBeanのクラスが表示されます。「MBeans」タブでは、プラットフォームMXBeanサーバーにアクセスできます。さらに、アプリケーションのMBeanを監視および管理することもできます。MBean情報は図10-12に示されています。 。

図 10-12 MBean 情報

左側には、現在実行中のすべての MBean が表示されます。MBean ツリーで MBean が選択されると、右側には、現在選択されている MBean の MBeanInfo および記述子情報が表示されます。現在の MBean の関連する属性、操作、および通知情報が下に表示されます。

MBean プロパティ

MBean ツリーで MBean を選択し、「属性」ノードをクリックします。MBean のすべての属性が表示されます。図 10-13 に示すように、メモリを例に挙げます

図 10-13 メモリ属性

「属性」で 1 つの属性を選択すると、図 10-14 に示すように、現在の属性の詳細情報が右側に表示されます。

図10-14 プロパティの詳細

属性値(右側の太字のテキスト)をクリックすると、詳細な属性値情報が展開されます。展開されたHeapMemoryUsage属性の値を図10-15に示します

図 10-15 ヒープメモリ使用量の詳細

属性値をダブルクリックして、表示された値を変更します。一部の属性はグラフに表示されます。図10-16は、スレッド化のCurrentThreadUserTime属性値を示しています。

図10-16 属性値のグラフ表示

MBean の操作

MBean ツリーで MBean を選択し、「操作」ノードをクリックします。MBean に関連するすべての操作が表示されます。図 10-17 に示すように、スレッド化を例に挙げます

図 10-17 ねじ切り操作

図 10-18 に示すように、オペレーション コール内のボタンをクリックしてこれらのメソッドを呼び出し、メソッドをクリックして現在のメソッドの詳細を表示します

図 10-18 メソッドの詳細

Mbean 通知

MBean ツリーで MBean を選択し、「通知」ノードをクリックして通知を選択すると、図10-19に示すように、メモリを例として通知の詳細情報が右側に表示されます

図 10-19 通知の詳細

最後に、私の記事をよく読んでくださった皆様に感謝申し上げます。ファンの増加と注目度を見ると、常に礼儀があります。それほど価値のあるものではありませんが、使用できる場合は直接受け取ることができます!

ソフトウェアテスト面接文書

私たちは高給の仕事を見つけるために勉強しなければなりません。以下の面接の質問は、アリババ、テンセント、バイトなどの一流インターネット企業の最新の面接資料からのものであり、バイトの上司の中には権威ある回答をしている人もいます。 set 面接情報に基づいて、誰もが満足のいく仕事を見つけることができると思います。
 

ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/m0_58026506/article/details/133102506