インスタンスの性能管理
ホーム画面> プロジェクト選択> インスタンス性能管理
アプリケーションの環境を確認し、性能に関連する設定を確認できます。
エージェントリスト
画面左側のアプリケーション一覧では、プロジェクトに割り当てられたエージェントの一覧を確認できます。 個々のエージェント項目を選択すると、右画面に、設定された環境変数、エージェント設定及びに性能に関する情報を照会できます。
エージェント一覧を更新するか、非活性化されたエージェントを再起動しても一覧に自動的に表示されない場合は、ボタンを選択してください。
エージェントおよびアプリケーションの詳細情報
画面の右側では、エージェントおよびアプリケーションに関する詳細情報を確認できます。
-
右上のテキスト入力欄から希望する項目がフィルタリングできます。
-
モニタリング対象サーバーに位置するエージェントおよびアプリケーションの変更が自動的に反映されない場合は、リフレッシュボタンを選択してください。
エージェント関連項目
実行環境変数
ホーム画面 > プロジェクト選択 > インスタンス性能管理 > 実行環境変数
エージェントの実行に関連する環境変数を照会できます。 エージェントバージョンやインストールパス、名前、IPアドレスなどを確認できます。
エージェントログ
ホーム画面 > プロジェクト選択 > インスタンス性能管理 > エージェントログ
モニタリング対象サーバーに保存されているエージェントログを照会できます。 ログのファイル名は、_whatap-YYYYMMDD
.log_形式です。 各ログを選択して、ログに含まれてあるエラーやイベントに関する情報が確認できます。
ログに関連するエージェント設定は、次の文書を参考してください。
エージェント設定
ホーム画面> プロジェクト選択> インスタンス性能管理 > エージェント設定 Old
モニタリング対象サーバーに位置するwhatap.confファイルを直接修正することなく、エージェント設定オプションを追加、変更、または削除できます。
エージェント設定機能は、使用性と機能を改善した管理 > エージェント設定メニューの利用をお勧めします。 画面右上の新しいエージェント設定ボタンを選択してください。 詳細については、次の文書を参考してください。
アプリケーション関連項目
環境変数
ホーム画面 > プロジェクト選択 > インスタンス性能管理 > 環境変数
アプリケーションの実行に関連する環境変数情報を照会できます。
ヒープヒストグラム
ホーム画面 > プロジェクト選択 > インスタンス性能管理 > ヒープヒストグラム
JVM(Java仮想マシン)のメモリにロードされているヒープ占有オブジェクトの状況(ヒープメモリ上のオブジェクト別サイズ)を照会すること ができます。
Java 6~8バージョンでは、JVMオプションなしで標準対応しますが、一部のJavaバージョンによっては次のようにJVMオプションを適用する必要があります。
-
Java 9 ~ Java 15バージョン
-Djdk.attach.allowAttachSelf=true
examplejava -javaagent:{WHATAP_HOME}/whatap.agent-X.Y.Z.jar -Djdk.attach.allowAttachSelf=true -jar {application.jar}
-
Java 16バージョン以降
-Djdk.attach.allowAttachSelf=true
--add-opens=jdk.attach/sun.tools.attach=ALL-UNNAMEDexamplejava -javaagent:{WHATAP_HOME}/whatap.agent-X.Y.Z.jar -Djdk.attach.allowAttachSelf=true --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=jdk.attach/sun.tools.attach=ALL-UNNAMED -jar {application.jar}
-
Java 5以前の旧バージョン、IBM Javaには対応していません。
ロード済クラス
ホーム画面 > プロジェクト選択 > インスタンス性能管理 > ロード済クラス
Javaアプリケーションにロードされたクラス情報を確認できます。
ライブラリバージョン
ホーム画面 > プロジェクト選択 > インスタンス性能管理 > ライブラリバージョン
Javaアプリケーションを構成するライブラリのバージョンを確認できます。
スレッドリスト/ダンプ
ホーム画面 > プロジェクト選択 > インスタンス性能管理 > スレッドリスト/ダンプ
Java プロセス内のすべてのスレッド状態に関するスナップショット情報を確認できます。 Javaアプリケーションの性能問題を分析するために利用できます。 スレッドリストから各スレッドのボタンを選択すると、スレッドダンプの詳細を確認できます。 詳細については次の文書を参照してください。
ソケットオプーン数
ホーム画面 > プロジェクト選択 > インスタンス性能管理 > ソケットオプーン数
JavaアプリケーションがTCP機能を実行するためにオープンしたソケット(Socket) 情報を確認できます。
メソッド性能状態
ホーム画面 > プロジェクト選択 > インスタンス性能管理 > メソッド性能状態
Javaアプリケーションで実行中のメソッド(Method)の詳細情報を確認できます。
データソース状態
ホーム画面 > プロジェクト選択 > インスタンス性能管理 > データソース状態
データソース(DataSource)の状態を確認できます。
システムGC
ホーム画面 > プロジェクト選択 > インスタンス性能管理 > システムGC
JVM(Java仮想マシン)のヒープ領域で 動的に割り当てたメモリのうち、不要になったメモリオブジェクト(garbage)を集めて削除することができます。 実行ボタンを選択するとGCプロセスが実行され、実行前後のメモリ容量が確認できます。
ヒープダンプ
ホーム画面 > プロジェクト選択 > インスタンス性能管理 > ヒープダンプ
Javaアプリケーションの実行中にメモリ漏れなどの問題が発生すると、関連した問題を整理してダンプファイルを作成できます。 ヒープダンプ確保ボタンを選択します。
この機能は、Javaエージェント1.5.2バージョン以降に対応しています。 エージェント設定でheapdump_enabled
オプションをtrue
に設定してください。 ヒープダンプ確保ボタンを選択して、ヒープダンプファイルを作成する機能を活性化します。 毎回ヒープダンプを自動作成するわけではなく、そのオプションが性能に影響を与えることはありません。 ただし、ダンプの確保作業は性能に影響を与える可能性があります。
ヒープダンプの確保作業は、負荷の大きい作業だと言えます。 負荷とは別に、ヒープダンプがすべて抽出されるまでアプリケーションのコードは実行中止(stop the world)になるため、ユーザーが感じる性能の差はさらに激しくなる可能性があります。
スロットル設定
ホーム画面 > プロジェクト選択 > インスタンス性能管理 > スロットル設定
Javaアプリケーションの負荷量制御に関連するエージェント設定を確認し、オプションを設定できます。 負荷量制御に関するエージェント設定の詳細については、次の文書を参考してください。
スレッドダンプ分析
スレッドリスト/ダンプタブで確認できる情報について案内します。
スレッド状態
スレッドの状態は、java.lang.Thread
クラス内にState
という名前のEnumerated Types(列挙型)と宣言された項目です。
-
NEW
:スレッドは作成されましたが、まだ実行されていません。 -
RUNNABLE
:現在CPUを占有し、作業を行っている状態です。 オペレーティングシステムのリソース分配によりWAITING
状態になる可能性があります。 -
WAITING
:wait()
、join()
、park()
メソッドなどを利用して待機している状態です。 -
TIMED_WAITING
:sleep()
、wait()
、join()
、park()
メソッド等を用いて待機している状態、WAITING
状態と異なる点は、与えられた時間に待機している状態です。 外部的な変化だけでなく、時間によっても待機状態が解除されることがあります。 -
BLOCKED
:使用しようとする個体のロック(Lock)が解除されるまで待機している状態です。 -
TERMINATED
:実行済みの状態です。
スレッドダンプ情報
スレッド一覧で各スレッドのボタンをクリックすると、スレッドダンプ情報を確認できます。
スタック
項目 | プロパティ | 説明 |
---|---|---|
スレッドID | threadId | スレッドに割り当てられた固有ID |
ロック所有者ID | lockOwnerId | スレッドがブロックされたオブジェクト(Monitor) のモニタのロックを維持するスレッドID |
待ち件数 | waitedCount | スレッドがWAITING またはTIMED_WAITING 状態になった総回数 |
ブロック数 | blockedCount | スレッドがBLOCKED 状態になった総回数 |
待ち時間 | waitedTime | スレッドがWAITING 状態を継続した経過時間(ミリ秒)、スレッド競合モニタリングが非活性化された場合-1 を返還 |
スレッドCPU時間 | threadCpuTime | スレッドのCPU時間合計(ナノ秒)をミリ秒で計算して表示、CPU時間測定を非活性化した場合-1 を返還 |
ステータス | threadstate | スレッド状態 |
ブロック時間 | blockedTime | スレッドがBLOCKED 状態になってからの経過時間(ミリ秒)、スレッド競合監視が非活性化された場合-1 を返還 |
スレッド名 | threadName | スレッドの固有名 |
ロック名 | lockName | スレッドの入力がブロックされたりObject.wait メソッドを介して通知を待つモニターロックを表示した文字列 |
ロック所有者名 | lockOwnerName | スレッドがブロックされるオブジェクトのモニターロックを受け入れるスレッド名 |
スレッドユーザー時間 | threadUserTime | スレッドがユーザモードで実行したCPU時間(ナノ秒)をミリ秒で計算して表示 |
スレッド情報の詳細については次のリンクを参考にしてください。
スタックトレース
例外が発生した時のスタック(Stack) 追跡を表示します。 スタックフレーム一覧には、コードが呼び出したメソッド情報が含まれています。