3.3.17 JavaVMの資料取得の設定
ここでは,次に示すJavaVMの資料を取得するための設定について説明します。
-
JavaVMのスレッドダンプ
-
JavaVMログ(JavaVMログファイル)
-
明示管理ヒープ機能のイベントログ
JavaVM起動オプションについては,マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「14. JavaVM起動オプション」を参照してください。
なお,JavaVMのスレッドダンプは,デフォルトでは次のディレクトリ下に出力されます。
-
Windowsの場合
<作業ディレクトリ>\ejb\<サーバ名称>
-
UNIXの場合
<作業ディレクトリ>/ejb/<サーバ名称>
JavaVMログは,デフォルトでは次のディレクトリ下に出力されます。
-
Windowsの場合
<作業ディレクトリ>\ejb\<サーバ名称>\logs
-
UNIXの場合
<作業ディレクトリ>/ejb/<サーバ名称>/logs
出力先を変更したい場合は,JavaVMまたはJ2EEサーバ起動前に,簡易構築定義ファイルで論理J2EEサーバ(j2ee-server)の<configuration>タグ内に,ejb.server.log.directoryパラメタで,ログ出力ディレクトリを変更しておく必要があります。
次に,JavaVMのスレッドダンプ,JavaVMログ(JavaVMログファイル)および明示管理ヒープ機能のイベントログについて,それぞれの取得の設定を説明します。
(1) JavaVMのスレッドダンプ取得の設定
JavaVMのスレッドダンプを取得するための設定について説明します。
JavaVMのスレッドダンプに出力される内容は,簡易構築定義ファイルでJavaVM起動パラメタに指定しているJavaVM起動オプションによって異なります。JavaVM起動オプションは,論理J2EEサーバ(j2ee-server)の<configuration>タグ内に,JavaVM起動パラメタで定義します。JavaVM起動パラメタの指定内容を次に示します。
- <param-name>タグ
-
add.jvm.arg
- <param-value>タグ
-
<JavaVM起動オプション>
JavaVM起動オプションに指定するオプションを次の表に示します。なお,オプションの詳細については,マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「14. JavaVM起動オプション」を参照してください。
オプション |
説明 |
---|---|
-XX:+HitachiThreadDump |
|
-XX:+HitachiThreadDumpToStdout |
拡張スレッドダンプを標準出力に出力します。デフォルトの状態では,出力するように設定されています。 |
-XX:+HitachiThreadDumpWithHashCode |
スレッド情報にスレッドのハッシュコードを出力します。デフォルトの状態では,出力するように設定されています。 |
-XX:+HitachiThreadDumpWithCpuTime |
スレッド情報にスレッドを開始してからのユーザCPU時間,およびカーネルCPU時間を出力します。デフォルトの状態では,出力するように設定されています。 |
-XX:+HitachiThreadDumpWithBlockCount |
スレッド情報にスレッドが処理をブロックした回数,および処理が待ち状態になった回数を出力します。デフォルトの状態では,出力するように設定されています。 |
-XX:+HitachiOutOfMemoryAbort -XX:+HitachiOutOfMemoryAbortThreadDump |
どちらも設定されている場合は,OutOfMemoryErrorによって強制終了した時に,スレッドダンプを出力します。ただし,J2SEクラスライブラリでCヒープ不足が発生した場合,およびJavaVMの処理中にCヒープ不足が発生した場合は,スレッドダンプを出力しません。 |
-XX:+HitachiOutOfMemoryAbortThreadDumpWithJHeapProf |
OutOfMemoryErrorによって強制終了した時に出力されるスレッドダンプに,クラス別統計情報を出力します。デフォルトでは出力されません。 |
スレッドダンプファイルの出力先を変更する場合は,JAVACOREDIR環境変数に出力先を指定してください。JAVACOREDIR環境変数の詳細については,マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「14.7 JavaVMで使用する環境変数の詳細」を参照してください。
(2) JavaVMログ取得の設定
JavaVMログを取得するための設定について説明します。
JavaVMログとは,製品が標準のJavaVMに追加した拡張オプションを使用して取得できるログです。標準のJavaVMよりも,多くのトラブルシュート情報が取得できます。このログファイルを,JavaVMログファイルといいます。このファイルには,JavaVMのGCのログも出力されます。
JavaVMログファイルを取得するためには,簡易構築定義ファイルでJavaVM起動パラメタにJavaVM起動オプションを指定します。JavaVM起動オプションは,論理J2EEサーバ(j2ee-server)の<configuration>タグ内に,JavaVM起動パラメタで定義します。JavaVM起動パラメタの指定内容を次に示します。
- <param-name>タグ
-
add.jvm.arg
- <param-value>タグ
-
<JavaVM起動オプション>
JavaVM起動オプションに指定するオプションを次の表に示します。なお,オプションの詳細については,マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「14. JavaVM起動オプション」を参照してください。
オプション |
説明 |
---|---|
-XX:+HitachiOutOfMemoryStackTrace -XX:+HitachiVerboseGC -XX:+HitachiOutOfMemoryHandling -XX:+HitachiJavaClassLibTrace -XX:+JITCompilerContinuation |
次のオプションのうちどれかを指定している場合に,JavaVMログファイルを出力します。
|
必要に応じて,次の拡張オプションを指定して,JavaVMログファイルの出力方法や出力内容を設定してください。
-
JavaVMログファイルのファイルサイズやファイル数
-
拡張verbosegc機能オプション
-
OutOfMemoryError発生時の拡張機能オプション
-
クラスライブラリトレース機能オプション
-
ローカル変数情報出力機能オプション
-
ログファイルの非同期出力機能オプション など
次に,JavaVMの保守情報(Javaヒープの情報)およびGCのログに拡張verbosegc情報を出力するための設定について説明します。次の表に示すオプションで,拡張verbosegc情報の出力を有効にして,拡張verbosegc情報の出力形式を指定してください。
オプション |
説明 |
---|---|
-XX:+HitachiVerboseGC |
拡張verbosegc情報をJavaVMログファイルに出力します。 |
-XX:+HitachiVerboseGCPrintDate |
拡張verbosegc情報の各行に日付を出力します。 |
-XX:+HitachiVerboseGCCpuTime |
GCの開始から終了までの間で,GCを実行したスレッドのCPU利用時間を出力します。CPU利用時間は,ユーザモードで費やしたCPU時間とカーネルモードで費やしたCPU時間に分けて出力されます。 |
-XX:HitachiVerboseGCIntervalTime=<時間間隔(秒)> |
拡張verbosegc情報の出力間隔を指定します。 |
-XX:+HitachiVerboseGCPrintCause |
拡張verbosegc情報に,GCが発生した要因を出力します。 |
-XX:+HitachiOutputMilliTime |
拡張verbosegc情報の各行に日時(ミリ秒まで)を出力します。 |
-XX:+HitachiCommaVerboseGC |
拡張verbosegc情報をCSV形式で出力します。 |
-XX:+HitachiVerboseGCPrintTenuringDistribution |
Survivor領域の年齢分布情報を出力します。出力形式や出力情報については,「9.11 Survivor領域の年齢分布情報出力機能」を参照してください。 |
-XX:+HitachiVerboseGCPrintJVMInternalMemory |
JavaVM内部で管理しているヒープ情報をJavaVMログファイルに出力します。 |
-XX:+HitachiVerboseGCPrintThreadCount |
Javaスレッドの数を監視するために,Javaスレッドの数をJavaVMログファイルに出力します。 |
-XX:+HitachiVerboseGCPrintDeleteOnExit |
java.io.File.deleteOnExit()を呼び出したことによってJavaVMが確保した累積のヒープサイズとメソッドの呼び出し回数を,JavaVMログファイルに出力します。 |
拡張verbosegc情報から,そのサーバで必要とするJavaヒープ領域サイズ,Metaspace領域サイズなどを見積もるための情報を取得できます。
(3) 明示管理ヒープ機能のイベントログ取得の設定
ここでは,明示管理ヒープ機能のイベントログを取得するための設定について説明します。また,JavaVMログファイルとの関連についても説明します。
明示管理ヒープ機能のイベントログを取得するために必要な設定を次に示します。
-
ログ出力レベルの設定
目的に応じたログを出力するために,ログ出力レベルを設定します。「none」「normal」「verbose」「debug」の4段階で指定できます。J2EEサーバのデフォルトは「normal」です。「none」<「normal」<「vervose」<「debug」の順でログが詳細になり,出力量も多くなります。
例えば,通常は「normal」を指定して運用し,障害が発生した場合には「verbose」を指定して詳細なログを取得する,といった運用ができます。
-
ログを出力するファイルについての設定
明示管理ヒープ機能のログは,ほかのJavaVMのログとは別のファイルに出力されます。想定する運用に応じて,出力先のファイル,ファイルのサイズ,およびファイルの個数を設定してください。
J2EEサーバまたはバッチサーバの場合,これらの設定は,簡易構築定義ファイルでJavaVM起動パラメタに指定しているJavaVM起動オプションによって設定できます。JavaVM起動オプションは,論理J2EEサーバ(j2ee-server)の<configuration>タグ内に,JavaVM起動パラメタで定義します。JavaVM起動パラメタの指定内容を次に示します。
- <param-name>タグ
-
add.jvm.arg
- <param-value>タグ
-
<JavaVM起動オプション>
JavaVM起動オプションに指定するオプションを次の表に示します。なお,オプションの詳細については,マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「14. JavaVM起動オプション」を参照してください。
設定内容 |
オプション |
説明 |
---|---|---|
出力レベルの設定 |
-XX:HitachiExplicitMemoryLogLevel:<文字列> |
ログ出力レベルを指定します。
|
出力するファイルについての設定 |
-XX:HitachiExplicitMemoryJavaLog:<文字列> |
イベントログを出力するファイルのファイル名を指定します。 |
-XX:HitachiExplicitMemoryJavaLogFileSize=<自然数> |
1ファイル当たりの最大ファイルサイズを指定します。 |
|
-XX:HitachiExplicitMemoryJavaLogNumberOfFile=<自然数> |
作成するログファイルの最大数を指定します。指定値を超えると,ラップアラウンドされ,ログは最初に作成したファイルに出力されます。 |
なお,明示管理ヒープ機能のイベントログは,JavaVMログファイルとは異なるファイルに出力されます。ただし,一部のオプションについては,JavaVMログファイルに設定した値が引き継がれます。
JavaVMログファイルの設定を引き継ぐ項目を次の表に示します。
オプション名 |
意味 |
デフォルト値 |
---|---|---|
-XX:+HitachiJavaLogNoMoreOutput |
ログファイルの出力に失敗した場合の挙動を指定するオプションです。 |
有効 |
-XX:+HitachiOutputMilliTime |
ログファイルに出力する時間の単位をミリ秒にするかどうかを指定するオプションです。 |
無効 |
JavaVM拡張オプションの詳細は,マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「14.2 JavaVM拡張オプションの詳細」を参照してください。