Tomcatのインストールの仕方でCATALINA_OPTSの設定方法も異なる
Java Servlet を動かすために必要なコンテナとしてよく使用されているTomcatですが、Linux環境にインストールする方法としては大きく2つあります。
それぞれの違いはご存知ですか?
インストール方法によって、起動の仕組みが変わるため、CATALINA_OPTSの設定方法も変わってきます。
ここではその違いについて記したいと思いますので参考にしていただければ。
CATALINA_OPTSを設定する場面
Tomcatが起動するJavaVM(JVM)のメモリの割り当てを設定する場合に、CATALINA_OPTSを設定することになります。
メモリの割り当てが少ないと起動時、または、起動中にメモリリークなどが発生してプロセスが落ちてしまうので、割り当てのサイズを変更しておく必要性が出てくる場面があります。
CATALINA_OPTSに指定するパラメータは、とりあえず大体以下のあたりを設定しておけば大丈夫だと思います。
もちろん他にも細かくパラメータの設定はできますが、最初は以下を設定して改善されたか様子を見るのが良いでしょう。
-Xmx | 最大ヒープサイズ(最大メモリ使用量) |
-Xms | 初期ヒープサイズ(初期メモリ使用量) |
-Xss | プロセスに割り当てられるスタックサイズ(228k以上必要になります) |
Tomcatのインストール方法
wgetコマンドなどでソースコードをダウンロードしてからコンパイルする方法
詳細なインストール方法は別途記したいと思いますが、最初にコンパイルされる時はTomcatはデーモン化されておらず、startup.shやcatalina.shなどシェルで起動させることになります。
CATALINA_OPTSの設定に関しては、Tomcatの起動時にシェルファイルに記載されている設定値を読み込ませることになります。
記入するファイルとしてはcatalina.shやsetenv.shになりますが、環境変数はsetenv.shに書きましょう。
catalina.shの中に以下の記述がある通り、もしsetenv.shが存在していれば、勝手に読み込まれて設定値が反映されます。
if [ -r "$CATALINA_BASE/bin/setenv.sh" ]; then . "$CATALINA_BASE/bin/setenv.sh" elif [ -r "$CATALINA_HOME/bin/setenv.sh" ]; then . "$CATALINA_HOME/bin/setenv.sh" fi
上記の記述からもわかる通り、ファイルの場所としてはcatalina.shと同じディレクトリ上に置くことになります。
デフォルトではsetenv.shは存在しないため、自分で作成することになります。
※以下はtomcatのバージョンが8.5.13の時のパターンです。
cd /opt/apache-tomcat-8.5.13/bin vim setenv.sh
だいぶ省略はしていますが、例としてはこんな感じです。
※設定値は環境と要件に合わせて設定してください。
CATALINA_OPTS="-server -Xmx1024m -Xms1024m -Xss512k" export CATALINA_OPTS
設定が反映されているか確認したい場合、プロセスを確認してください。
ps aux | grep tomcat
以下はプロセスの例です。
tomcat 23302 1.7 30.4 4193556 1862964 ? Sl 2017 7778:07 /usr/java/jdk1.8.0_121/bin/java -Djava.util.logging.config.file=/opt/apache-tomcat-8.5.13/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -server -Xmx1024m -Xms1024m -Xss512k -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Djava.endorsed.dirs=/opt/apache-tomcat-8.5.13/endorsed -classpath /opt/apache-tomcat-8.5.13/bin/bootstrap.jar:/opt/apache-tomcat-8.5.13/bin/tomcat-juli.jar -Dcatalina.base=/opt/apache-tomcat-8.5.13 -Dcatalina.home=/opt/apache-tomcat-8.5.13 -Djava.io.tmpdir=/opt/apache-tomcat-8.5.13/temp org.apache.catalina.startup.Bootstrap start
この中に「/usr/lib/jvm/jre/bin/java -server -Xmx1024m -Xms1024m -Xss512k」という記述がありますよね。
これによって設定値が反映されていることが確認できました。
yumでインストールする方法
ここも詳細なインストール方法は別途記載しますが、yumでインストールした場合はTomcatはデーモン化されているため、サービス(プロセス)を起動すればOKです。
ただ、ソースをダウンロードした場合と異なり、yumでインストールした場合はcatalina.shファイルは作られません。
よって、ここでsetenv.shファイルを作成しても読み込まれないため、環境変数などが設定されているtomcat8.confファイルに記入してください。
vim /etc/tomcat8/tomcat8.conf
ファイルの一番下に以下のように記入してください。
※ここも設定値は環境と要件に合わせて設定してください。
CATALINA_OPTS="-server -Xmx1024m -Xms1024m -Xss512k"
あとはtomcatを再起動すれば反映されます。
設定が反映されているか確認したい場合、プロセスを確認してください。
ps aux | grep tomcat
tomcat 28652 61.9 33.0 2223808 336440 ? Sl 13:36 0:42 /usr/lib/jvm/jre/bin/java -server -Xmx1024m -Xms1024m -Xss512k -classpath :/usr/share/tomcat8/bin/bootstrap.jar:/usr/share/tomcat8/bin/tomcat-juli.jar:/usr/share/java/commons-daemon.jar -Dcatalina.base=/usr/share/tomcat8 -Dcatalina.home=/usr/share/tomcat8 -Djava.endorsed.dirs= -Djava.io.tmpdir=/var/cache/tomcat8/temp -Djava.util.logging.config.file=/usr/share/tomcat8/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager org.apache.catalina.startup.Bootstrap start
この中に「/usr/lib/jvm/jre/bin/java -server -Xmx1024m -Xms1024m -Xss512k」という記述がありますよね。
これによって設定値が反映されていることが確認できました。
Java+MySQL+Tomcatで始めるWebアプリケーション構築入門
- 作者:竹形 誠司
- 発売日: 2006/03/01
- メディア: 単行本
スッキリわかる Java入門 実践編 第2版 (スッキリシリーズ)
- 作者:中山 清喬
- 発売日: 2014/09/22
- メディア: 単行本(ソフトカバー)