LoginSignup
2
3

More than 1 year has passed since last update.

小ワザ集:Libertyでガーベッジ・コレクションの詳細情報を取得する

Last updated at Posted at 2022-02-13

この記事は,以前IBMのdeveloperWorks上で公開されていたWAS Traditional環境向けのWAS小ワザ集のLiberty版です。

ガーベッジ・コレクション(GC)の記録

Javaヒープの枯渇によるOutOfMemoryErrorや,GCによるパフォーマンスの問題を調査する際には,Javaヒープの使用状況とGCの実行を記録することが必須です。Libertyを使用する際には,できるだけGCの情報を記録するようにしましょう。

GCの情報を記録するためには,JVMの起動オプションを指定します。Libertyでは,サーバーの構成ファイルであるserver.xmlと同じディレクトリにjvm.optionsというファイルを作成し,その中に起動オプションを指定します。オプションは,1行に一つずつ指定するようにします。指定する内容は,使用しているJVMの種類によって異なります。

J9VM/OpenJ9での記録

製品の導入ディスクに含まれているIBM SDK for Java Version 8.xや,IBM Semeru Runtimesを使用している場合です。これらの環境では,IBMが独自に開発したJ9VMや,それをOSSとして公開したOpenJ9が使用されています。
jvm.optionsに以下の内容を記述します。この設定では,GCの記録は他のJVM出力と分けられて,messages.logなどと同じディレクトリにファイルとして記録されます。ファイル名はverbosegcからはじまり,日付やプロセスIDなどがふくまれたものになります。

jvm.options
-verbose:gc
-Xverbosegclog:logs/verbosegc.%Y%m%d.%H%M%S.%pid.log

HotSpot VMでの記録

Eclipse Temurinや他のHotSpot VM系のJDKディストリビューションを使用している場合には,使用しているJavaのバージョンによって設定内容が異なります。

Java 11/17や,それ以降のバージョンを使用している場合には,以下の内容を記述します。同じくlogsディレクトリにverbosegc.logというファイル名でGCの情報が記録されます。サーバーを再起動すると,以前の情報はファイル末尾に数字がついたファイルとしてバックアップされます。

jvm.options
-Xlog:gc*:logs/verbosegc.log:time,level,tags

Java 8を使用している場合には,以下の内容を記述します。この場合は,verbosegc.logの情報はサーバーを再起動するたびに上書きされてしまいます。トラブルなどがあった場合には,再起動する前にかならずlogsディレクトリのファイルをバックアップして情報を残すようにしてください。

jvm.options
-verbose:gc
-Xloggc:logs/verbosegc.log
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps

余談:サーバーごとに起動するJVMを変える

今回の記事を執筆するに当たって,サーバーごとに起動するJVMをSemeruだったりTemurinだったりに変えてテストを実行しました。このように特定のサーバーを特定のJVMで起動して利用したい場合には,server.envにJAVA_HOME環境変数を記述します。

% cat usr/servers/semeru17/server.env 
JAVA_HOME=/Library/Java/JavaVirtualMachines/ibm-semeru-open-17.jdk/Contents/Home

% cat usr/servers/temurin17/server.env 
JAVA_HOME=/Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home

% cat usr/servers/temurin8/server.env 
JAVA_HOME=/Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home

ただし,このような環境に依存する絶対パスを構成ファイルに記述してしまうと,その環境からserver packageコマンドで作成したアーカイブに可搬性がなくなってしまいますのでご注意ください。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3