Tomcatの使用メモリの設定をしてみた。

Tomcat9 の使用メモリの設定をしみてました。環境は以下です。

Amazon Linux 2023(メモリ1G)
Tomcat 9.0.106

Linuxのメモリが1Gしかないので、Tomcatに割り当てるメモリは小さめにします。

Tomcatのホーム配下にある bin ディレクトリに setenv.sh というファイルを新規作成します。setenv.sh に記載する内容は以下です。


export CATALINA_OPTS="-Xms64m -Xmx128m -XX:MaxMetaspaceSize=128m"
  • -Xms64m・・・初期のヒープメモリを64MBにする。JVMが動くとき最初に確保されるメモリ。
  • -Xmx128m・・・ヒープメモリの使用は最大で128MBにする。
  • -XX:MaxMetaspaceSize=128m・・・クラスロードに使用する領域を128MBに制限する。

setenv.sh は .sh の拡張子がついていますが、先頭行に #!/bin/sh の記載はしません。これは setenv.sh がTomcatの起動スクリプト( catalina.sh )から source により読み込まれるためです。これにより setenv.sh は実行権限(x)もいりません。読み取り権限(r)だけあればよいです。

また、使用するメモリが小さいためスレッド数の調整もしておきます。conf ディレクトリにある server.xml に maxThreads の追記をします。アクセス数が少ないことを想定して maxThreads を50にしておきます。


<Connector port="8080" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443"
    maxParameterCount="1000"
    maxThreads="50"
    />

Tomcatを起動します。起動時に設定が表示されます。


$ ./startup.sh 
Using CATALINA_BASE:   /home/user/tomcat-09.0.106
Using CATALINA_HOME:   /home/user/tomcat-09.0.106
Using CATALINA_TMPDIR: /home/user/tomcat-09.0.106/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /home/user/tomcat-09.0.106/bin/bootstrap.jar:/home/user/tomcat-09.0.106/bin/tomcat-juli.jar
Using CATALINA_OPTS:   -Xms64m -Xmx128m -XX:MaxMetaspaceSize=128m
Tomcat started.

この設定は小規模アプリで接続ユーザー数も少ない場合ですので、各自の環境にあわせて調整してください。

なお今回はヒープサイズの調整のために setenv.sh に設定を記載しましたが、GC関連の設定などの際にも利用できます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です