Tomcatの設定

Tomcatの設定

Tomcatのインストールが終われば、Tomcatが動作するまであと少しです。
環境によっては既に変更が終わっている場合や値を調整する必要をもあるかと思いますが、基本的には下記の4つの点を設定が必要になると思います。

Tomcat設定のポイント

  • ユーザ環境変数の設定
  • Tomcat実行シェルスクリプト修正
  • ヒープメモリの設定
  • Tomcat自動起動の設定

ユーザ環境変数の設定

Tomcatのアプリケーションを実行するには、あらかじめJDKやTomcatの格納ディレクトリにPATHを通しておく必要があります。これらのPATH設定は、「tomcat」ユーザのユーザプロファイルにて設定します。ユーザを作成した際に指定したディレクトリにもよりますが、Tomcatのインストール(準備編)の方法でユーザを作成した場合には、ユーザプロファイルは/var/empty/tomcat/.bash_profileというファイルになります。

既にいくつかの記述があるかと思いますので、 必要な記述は必ず残すようにしてください。 また、ファイルパスやディレクトリのパスは、導入環境の設定にあわせて追加します。

export JAVA_HOME=/usr/java/jdk1.6.0_0
# シンボリックリンクでは記述しない方が良いようです

export CATALINA_HOME=/usr/local/apache-tomcat-5.5.20
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
export CLASSPATH=$CLASSPATH:$CATALINA_HOME/common/lib/servlet-api.jar;$CATALINA_HOME/common/lib/jsp-api.jar

Tomcat実行シェルスクリプト修正

次に、Tomcatアプリケーションの実行シェルにもJDKやTomcatの格納ディレクトリを設定します。
Tomcatのインストールディレクトリのcatalina.sh(/usr/local/tomcat-5.5.20/bin/catalina.sh)に記述を追加します。こちらもユーザプロファイルと同様にファイルパスやディレクトリのパスは、導入環境の設定にあわせます。

# 44行目付近
CATALINA_HOME=/usr/local/apache-tomcat-5.5.20
CATALINA_BASE=${CATALINA_HOME}
CATALINA_TMPDIR=${CATALINA_HOME}/temp
JAVA_HOME=/usr/java/jdk1.6.0_0
JRE_HOME=${JAVA_HOME}

ヒープメモリの設定

今回のプロジェクトで最も苦しんだこと、それがヒープメモリの設定です。
アプリケーションの処理の内容にもよりますが、今回のプロジェクトでもいくつかの処理を実行したときに、メモリ領域を確保できずにjava.lang.OutOfMemoryError(スタック、ヒープなどのデータ・エリアを割り当てられないときに起こるエラー)が頻発していました。
Tomcatのデフォルトの設定は、あらゆる環境での最低限の動作を想定しているためこのような設定になっているものと考えられますが、 一般的な動作環境ではJVMに対して多くのヒープメモリの領域を確保し、パフォーマンスを向上させる ことをおすすめします。

この設定は、実行環境に搭載されているCPUやメモリサイズに大きく関係します。 設定値は、必ず実行環境によって適切な値に調整するようにしてください。 ヒープメモリの設定ファイルは、setenv.shという名前で作成します。/usr/local/tomcat-5.5.20/bin/setenv.shにファイルが存在しない場合には、新たにファイルを作成してください。

#!/bin/sh
XMS="512M"
XMX="1024M"
XSS="256k"
PERMSIZE="128M"
MAXPERMSIZE="128M"
NEWSIZE="320M"
MAXNEWSIZE="320M"
SURVIVORRATIO="2"
TARGETSURVIVORRATIO=80
JAVAENV="java.awt.headless=true"
JVM_OPT="-d64"
# 32ビットマシンでは、-d32とします

export CATALINA_OPTS="-server -Xms${XMS} -Xmx${XMX} -Xss${XSS} 
-XX:PermSize=${PERMSIZE} -XX:MaxPermSize=${MAXPERMSIZE}
-XX:NewSize=${NEWSIZE} -XX:MaxNewSize=${MAXNEWSIZE}
-XX:SurvivorRatio=${SURVIVORRATIO}
-XX:TargetSurvivorRatio=${TARGETSURVIVORRATIO} -D${JAVAENV} ${JVM_OPT}"
# CPU:Intel(R) Xeon(TM) CPU 3.20GHz 64bit
# メモリ:2.0GBでの参考値となります。