Hitachi

Cosminexus V11 アプリケーションサーバ 機能解説 保守/移行編


3.3.17 JavaVMの資料取得の設定

ここでは,次に示すJavaVMの資料を取得するための設定について説明します。

JavaVM起動オプションについては,マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「14. JavaVM起動オプション」を参照してください。

なお,JavaVMのスレッドダンプは,デフォルトでは次のディレクトリ下に出力されます。

JavaVMログは,デフォルトでは次のディレクトリ下に出力されます。

出力先を変更したい場合は,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起動オプション」を参照してください。

表3‒21 JavaVM起動オプションに指定するオプション(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起動オプション」を参照してください。

表3‒22 JavaVM起動オプションに指定するオプション(JavaVMログ取得の設定)

オプション

説明

-XX:+HitachiOutOfMemoryStackTrace

-XX:+HitachiVerboseGC

-XX:+HitachiOutOfMemoryHandling

-XX:+HitachiJavaClassLibTrace

-XX:+JITCompilerContinuation

次のオプションのうちどれかを指定している場合に,JavaVMログファイルを出力します。

  • -XX:+HitachiOutOfMemoryStackTraceを指定している場合は,例外情報とスタックトレースをJavaVMログファイルに出力します。なお,このオプションを指定すると,-XX:+HitachiOutOfMemorySizeおよび-XX:+HitachiOutOfMemoryCauseも同時に指定されます。

  • -XX:+HitachiVerboseGCを指定している場合は,GCが発生したときに,拡張verbosegc情報をJavaVMログファイルに出力します。

  • -XX:+HitachiOutOfMemoryHandlingを指定している場合は,Javaヒープ不足またはMetaspace領域不足が原因のOutOfMemory発生時に,OutOfMemoryの発生頻度に関する情報をJavaVMログファイルに出力します。

  • -XX:+HitachiJavaClassLibTraceを指定している場合は,クラスライブラリのスタックトレースをJavaVMログファイルに出力します。

  • -XX:+JITCompilerContinuationを指定している場合は,JITコンパイラ稼働継続機能が有効になるため,JITコンパイルがアプリケーションを構成するメソッドの論理矛盾で失敗すると,JITコンパイラ稼働継続機能のログをJavaVMログファイルに出力します。

必要に応じて,次の拡張オプションを指定して,JavaVMログファイルの出力方法や出力内容を設定してください。

次に,JavaVMの保守情報(Javaヒープの情報)およびGCのログに拡張verbosegc情報を出力するための設定について説明します。次の表に示すオプションで,拡張verbosegc情報の出力を有効にして,拡張verbosegc情報の出力形式を指定してください。

表3‒23 拡張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ログファイルとの関連についても説明します。

明示管理ヒープ機能のイベントログを取得するために必要な設定を次に示します。

J2EEサーバまたはバッチサーバの場合,これらの設定は,簡易構築定義ファイルでJavaVM起動パラメタに指定しているJavaVM起動オプションによって設定できます。JavaVM起動オプションは,論理J2EEサーバ(j2ee-server)の<configuration>タグ内に,JavaVM起動パラメタで定義します。JavaVM起動パラメタの指定内容を次に示します。

<param-name>タグ

add.jvm.arg

<param-value>タグ

<JavaVM起動オプション>

JavaVM起動オプションに指定するオプションを次の表に示します。なお,オプションの詳細については,マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「14. JavaVM起動オプション」を参照してください。

表3‒24 JavaVM起動オプションに指定するオプション(明示管理ヒープ機能のイベントログ取得の設定)

設定内容

オプション

説明

出力レベルの設定

-XX:HitachiExplicitMemoryLogLevel:<文字列>

ログ出力レベルを指定します。

  • none

    明示管理ヒープ機能のイベントログが出力されません。

  • normal

    通常運用の場合に指定します。Explicitヒープのサイズが大きく変化するイベントが発生した場合や,GC発生時のExplicitヒープの状態が出力されます。

  • verbose

    障害が発生した場合など,詳細なログが必要なときに指定します。

  • debug

    verboseよりもさらに詳細なログが必要な場合に指定します。システムのパフォーマンスは低下します。

出力するファイルについての設定

-XX:HitachiExplicitMemoryJavaLog:<文字列>

イベントログを出力するファイルのファイル名を指定します。

-XX:HitachiExplicitMemoryJavaLogFileSize=<自然数>

1ファイル当たりの最大ファイルサイズを指定します。

-XX:HitachiExplicitMemoryJavaLogNumberOfFile=<自然数>

作成するログファイルの最大数を指定します。指定値を超えると,ラップアラウンドされ,ログは最初に作成したファイルに出力されます。

なお,明示管理ヒープ機能のイベントログは,JavaVMログファイルとは異なるファイルに出力されます。ただし,一部のオプションについては,JavaVMログファイルに設定した値が引き継がれます。

JavaVMログファイルの設定を引き継ぐ項目を次の表に示します。

表3‒25 JavaVMログファイルの設定を引き継ぐ項目

オプション名

意味

デフォルト値

-XX:+HitachiJavaLogNoMoreOutput

ログファイルの出力に失敗した場合の挙動を指定するオプションです。

有効

-XX:+HitachiOutputMilliTime

ログファイルに出力する時間の単位をミリ秒にするかどうかを指定するオプションです。

無効

JavaVM拡張オプションの詳細は,マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「14.2 JavaVM拡張オプションの詳細」を参照してください。