IT記事、時々ぼのぼの

ぼのぼのに毎日癒されつつ仕事しているエンジニアのブログです。


Tomcat7 メモリチューニング

簡単にTomcat7のメモリ設定箇所を記載します。
使用量の確認などは、jstatで確認するが、それはまた後日。
http://thinkit.co.jp/story/2011/03/25/2054/page/0/1

■参考
Javaパフォーマンス改善 - Full GCの原因とその解決方法について - Java入門

Tomcat7の場合、/etc/tomcat7/tomcat7.conf を変更して、以下の設定を有効とする。

JAVA_OPTS 環境変数を変更し、起動時のオプションとして以下を設定可能
基本的にはアプリケーションの使用メモリで設定することとなるが、
大まかな目安としては↓の値にしてみる。()

メモリ最大使用量(-Xmx)搭載メモリの半分程度。
メモリ初期使用量(-Xms)Xmxで指定した数値の半分位。

GCログの出力を有効にしておき、Full GCされたことは確認できるようにしておくことを推奨

例) JAVA_OPTS="-Xms2048m -Xmx4096m -verbose:gc"

-Xms ヒープ領域の初期値
-Xmx ヒープ領域の最大値。一般的に、-Xmsと同値にする
-Xmn NEW領域(Eden、From、To)の初期値
-XX:NewSize New 領域の初期値。同-Xmn
-XX:MaxNewSize New 領域の最大値。一般的に、-XX:NewSizeと同値にする
-XX:PermSize Permanent 領域の初期値
-XX:MaxPermSize Permanent 領域の最大値。一般的に、-XX:PermSizeと同値にする
-XX:NewRatio New 領域と Old 領域の比率
-XX:SurvivorRatio New 領域と Survivor 領域の比率。SurvivorRatio=Eden÷Survivor
-verbose:gc(-Xloggc:出力先) GCログ出力指定
-XX:+PrintGCTimeStamps GCログにタイムスタンプ(Java起動時からの経過時間)出力
-XX:+PrintGCDetails 詳細なGCログを出力
-XX:+PrintClassHistogram SIGQUITシグナル(kill -3 pid)受信時にヒープ統計情報を出力。-verbose:gc(-Xloggc:出力先)と併用必須
-XX:+HeapDumpOnOutOfMemoryError OutOfMemoryError発生時にヒープダンプを出力 (JDK1.5+)
-XX:+UseParallelGC マルチコアCPUまたは複数CPUの場合は、パラレルGCをマルチスレッドで実行を有効にする
※-XX:PermSize/-XX:MaxPermSize:-Xms/-Xmx範囲に含まれないことをご理解ください

ちょっと余談で、ログのタイムスタンプが日本時間にならない場合も軌道オプションを変更
JAVA_OPTSに追記で、日本時間で記載されるようになる。

  • Duser.timezone=Asia/Tokyo