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
(4) プロパティ画面が起動するのでJavaのタブへ移動し、Java Optionsに以下の項目を追加設定してください。
-verbose:gc
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-Xloggc:D:/Yellowfin803_postgres\appserver/logs/gc_%p_%t.log
-XX:+UseGCLogFileRotation
-XX:NumberOfGCLogFiles=10
-XX:GCLogFileSize=1m
※-Xloggc: の後続にはログファイルのパスおよびファイル名を指定します。
環境に応じてパスを変更してください。
環境変数は使用できません。
(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の下記設定を追加してください(133行目辺り)。
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=1m
(4) catalina.batを保存したらYellowfinを再起動してください。
3. Linux/Unixの場合
(1) Yellowfinを停止してください。
(2) "<Yellowfinインストールディレクトリ>\appserver\bin"にあるcatalina.shをエディターで開いて
ください。
(3) catalina.shの下記設定を追加してください(135行目辺り)。
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=1m"
(4) catalina.shを保存したらYellowfinを再起動してください。
オプションの説明
オプション | 説明 | 例 |
verbose | GCログを有効にします | verbose:gc |
+PrintGCDetails | GCログの詳細を出力します | -XX:+PrintGCDetails |
+PrintGCDateStamps | 発生日時をログに出力します | -XX:+PrintGCDateStamps |
Xloggc | GCログのファイルを指定します | -Xloggc:/var/log/gc_%p_%t.log |
+UseGCLogFileRotation | GCログのローテーションを有効にします | -XX:+UseGCLogFileRotation |
NumberOfGCLogFiles |
GCログの世代数を指定します |
-XX:NumberOfGCLogFiles=10 |
GCLogFileSize | GCログのファイルサイズを指定します |
-XX:GCLogFileSize=1m |
GCログの確認
<Yellowfinインストールディレクトリ>\appserver\logsに下記の規則のログファイル名で出力されます。
gc_<JVMのPID>_<yyyy-mm-dd_hh-mm-ss>.log.<世代番号>
また、現在出力中のログには末尾に".current"が付与されています。