Tomcat起動時のJava仮想マシンのパフォーマンスチューニング | Pimp my Code. @wataru420

Pimp my Code. @wataru420

My name is Wataru Fukunaga.

デフォルトでは少量しか割り当てられない

Tomcatを利用してWebアプリケーションを作成する際、Tomcatが利用するJava仮想マシン(JVM)が利用するヒープメモリのサイズは、デフォルトでは少量しか割り当てられていない。

ある程度のアクセス数が見込めれる場合はきちんとチューニングする必要があります。

多少調べたので覚書程度に書いておきます。

Tomcatは起動時のJVMオプションを$CATALINA_OPTSや$JAVA_OPTS環境変数に設定することで制御できます。
これらの変数を設定する方法は色々ありますが、Tomcatの起動スクリプトのcatalina.shにはsetenv.shがあれば読み込むというコードが仕込まれているので、それを利用するのがスマートな気がします。

setenv.shの作り方

作り方は簡単です。
CATALINA_HOMEのbinにsetenv.shというファイルを作り、下記の内容を記述します。


#!/bin/sh

JAVA_OPTS="-server -Xms512M -Xmx512M"

export JAVA_OPTS


これでOKです。

設定できる代表的な項目

-server:サーバーモードを有効化
-XX:MaxPermSize:Permanent領域の最大値、割と大きなアプリケーションでも256Mも必要ないぐらい。
-XX:PermSize:Permanent領域の初期値、一般的にMaxPermSizeと同じにする。
-Xmx:ヒープ全体の最大値
-Xms:ヒープ全体の最小値、一般的にXmxと同じにする。
-Xmn:New世代領域サイズ -Xmxサイズの1/4 - 1/3程度
-XX:SurvivorRatio:Eden領域のサイズをFromまたはTo領域のサイズで割った値。一般に2 - 8程度。

-Dcom.sun.management.jmxremoteと記述するとjconsoleというJDKに付属されている監視ツールでアプリケーションのパフォーマンスやリソース消費に関する情報等を確認できる。

-XX:PrintGCDetails -Xloggc:<file>等と書くとGCのログが指定したファイルに出力される。

参考サイト

もっと詳しく知りたい方は下記のページがオススメです。
Javaメモリ、GCチューニングとそれにまつわるトラブル対応手順まとめ

Tomcatハンドブック 第2版
Tomcatハンドブック 第2版Jason Brittain Ian F. Darwin 村上 雅章

オライリージャパン 2008-11-21
売り上げランキング : 99414


Amazonで詳しく見る