Oracle WebLogic Server で GC ログを出力する方法
はじめに
コンピュータシステムにおいて使用されるアプリケーションサーバ製品はさまざまなものがありますが、その中で Oracle WebLogic Server (以下、WLS) をご使用の方も多いと思います。
今回は、その WLS において GC ログを出力する方法を紹介致します。
GC とは
GC とは Garbage Collection の略であり、簡単に申しますと JVM (Java仮想マシン) のメモリ内の不要な領域を解放するイベントです。これは WLS 独自のものではなく、JVM のイベントです。GC は JVM にとって無くてはならないものですが、まれに GC によって java アプリケーションの性能問題が発生することがあります。
GC ログとは
GC ログとは GC の記録です。GC の発生日時や所要時間、GC 前後のメモリ使用量等を記録することが可能です。GC によって性能問題が発生したときのために普段から GC ログを出力するようにしておくと良いでしょう。
GC ログを出力する具体的な設定方法
JVM オプションを指定することにより GC ログを出力することができます。GC ログを出力するための JVM オプションはさまざまあり、またベンダーやバージョンによっても異なりますが、今回は一般的なものを紹介致します。
JVM オプション | 説明 |
---|---|
-XX:+PrintGCDetails | GCの詳細な情報を出力します |
-XX:+PrintGCDateStamps | GCのタイムスタンプを出力します。 |
-XX:+PrintHeapAtGC | GC前後の詳細なヒープ情報を出力します。 |
-Xloggc:/tmp/gc_%p_%t.log | GCログファイル名です。左記は /tmp 配下に出力する例です。 |
-XX:+UseGCLogFileRotation | GCログをローテーションします。 |
-XX:NumberOfGCLogFiles=20 | GCログのファイルを20個でローテーションします。 |
-XX:GCLogFileSize=50M | GCログのファイルサイズを50MBまでにします。 |
WLS を利用している場合、上記 JVM オプションを設定する一般的な方法は以下の通りとなります。
1. $DOMAIN_HOME/bin/setDomainEnv.sh を vi エディタ等で開きます。
2. JVM オプションを設定する箇所を見つけます。
以下の記載がある箇所を見つけてください。
setDomainEnv.sh の何行目に以下の記載があるかは WLS のバージョンや OS の種類によっても異なりますが Linux 版の WLS 12.2.1.4 の場合 522 行目辺りでした。
JAVA_OPTIONS="${JAVA_OPTIONS}" export JAVA_OPTIONS
3. JVM オプションを記載します。
複数指定する際は以下のように半角スペース区切りで指定してください。
例)
JAVA_OPTIONS="-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/gc_%p_%t.log ${JAVA_OPTIONS}"
4. WLS 再起動
管理サーバや管理対象サーバを再起動します。
-Xloggc オプションで指定したパスに GC ログが出力されていれば成功です。
まとめ
今回は WLS で GC ログを出力する方法を簡単に紹介いたしました。GC による性能問題が発生した後で GC ログを出力する設定を行っても過去の GC の状況はわかりませんので、普段から GC ログが出力される設定にしておくことが重要です。
参考資料
-
Java HotSpot VM Options
https://www.oracle.com/java/technologies/javase/vmoptions-jsp.html