Garbage Collection(GC)について
YellowfinはJava(JVM)上で動作するWebアプリケーションです。
Javaはメモリの確保および廃棄をほぼ自動で行います。
このメモリの確保や廃棄を行なっているJavaの仕組みがGCです。
GCの動作のログを取得することでメモリの不足やメモリキャッシュの廃棄の頻度がわかり、パフォーマンスチューニングに役に立つことがあります。
GCログの出力方法
- Yellowfinをインストールした環境、また、Windowsの場合は起動方法によって設定の仕方が異なりますのでご注意ください。
⇒ Windowsサービスから起動している場合
⇒ Windowsショートカット、またはバッチファイルから起動している場合
⇒ Linux/Unixの場合
1. Windowsサービスの場合
(1) コマンドプロンプトを管理者権限で起動してください。
(2) "<Yellowfinインストールフォルダ>\appserver\bin"に移動してください。
例:cd C:\Program Files\Yellowfin 8.0\appserver\bin
(3) 以下のコマンドを実行してください。
tomcat8w.exe //ES//Yellowfin
※tomcat8wはご使用中の環境のtomcatのバージョンによって異なります。
"8"はtomcatのバージョン番号ですのでtomcat8wが存在しない場合は、
"8"以外の番号のファイルの存在を確認してください。
存在した場合はコマンドの"toncat8w"をそのファイル名に置き換えて実行します。
(4) プロパティ画面が起動するのでJavaのタブへ移動し、Java Optionsに以下の項目を追加設定してください。
- 使用中のJavaがV8(1.8.0)以前の場合
-verbose:gc
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-Xloggc:D:/Yellowfin803_postgres\appserver/logs/gc_%p_%t.log
-XX:+UseGCLogFileRotation
-XX:NumberOfGCLogFiles=10
-XX:GCLogFileSize=5m※-Xloggc: の後続にはログファイルのパスおよびファイル名を指定します。
環境に応じてパスを変更してください。
環境変数は使用できません。 - 使用中のJavaがV9以降の場合
-Xlog:gc*=info:file=D:\Yellowfin803_postgres\appserver/logs/gc_%p_%t.log:time,uptime,level,tags:filecount=10,filesize=5M
※file=: の後続にはログファイルのパスおよびファイル名を指定します。
環境に応じてパスを変更してください。
環境変数は使用できません。
(5) サービスよりYellowfinを起動してください。
2. Windowsショートカットの場合
(1) Yellowfinを停止してください。
(2) "<Yellowfinインストールフォルダ>\appserver\bin"にあるcatalina.batをメモ帳以外のエディター
で開いてください。
例:cd C:\Program Files\Yellowfin 8.0\appserver\bin\catalina.bat
(3) catalina.batの下記設定を追加してください。
- 使用中のJavaがV8(1.8.0)以前の場合
set JAVA_OPTS=%JAVA_OPTS% -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:%CATALINA_HOME%/logs/gc_%%p_%%t.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=5m
- 使用中のJavaがV9以降の場合
set JAVA_OPTS=%JAVA_OPTS% -Xlog:gc*=info:file=%CATALINA_HOME%/logs/gc_%%p_%%t.log:time,uptime,level,tags:filecount=10,filesize=5M
(4) catalina.batを保存したらYellowfinを再起動してください。
3. Linux/Unixの場合
(1) Yellowfinを停止してください。
(2) "<Yellowfinインストールディレクトリ>\appserver\bin"にあるcatalina.shをエディターで開いて
ください。
(3) catalina.shの下記設定を追加してください。
- 使用中のJavaがV8(1.8.0)以前の場合
JAVA_OPTS="$JAVA_OPTS -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:$CATALINA_HOME/logs/gc_%p_%t.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=5m"
- 使用中のJavaがV9以降の場合
JAVA_OPTS="$JAVA_OPTS -Xlog:gc*=info:file=$CATALINA_HOME/logs/gc_%p_%t.log:time,uptime,level,tags:filecount=10,filesize=5M"
(4) catalina.shを保存したらYellowfinを再起動してください。
GCログの確認
<Yellowfinインストールディレクトリ>\appserver\logsに下記の規則のログファイル名で出力されます。
gc_<JVMのPID>_<yyyy-mm-dd_hh-mm-ss>.log.<世代番号>
また、現在出力中のログには末尾に".current"が付与されています。