EatSmartシステム部ブログ

ウェブサイトの開発や運営に関する情報です。

Tomcat のオプション JAVA_OPTS と CATALINA_OPTS どちらが反映されるか?

結論

CATALINA_OPTS が反映されました

Tomcat のオプションの指定

イートスマートが運営するサービスは全てDockerコンテナ上で稼働しています Tomcatを利用するイメージは、全て共通のTomcatイメージから個別のイメージを作成しています この共通のTomcatイメージでは、個別のイメージで設定が不要なように JAVA_OPTS を設定し、個別のイメージで必要なものは CATALINA_OPTS を設定するようにしています

共通のTomcatイメージの設定を上書きしたい

共通のTomcatイメージで JAVA_OPTS に設定しているもののなかに "-XX:MaxMetaspaceSize" があります これを、大量のjarを含むアプリを動かすにあたり、設定を変更するために CATALINA_OPTS へ追加しました これが、正しく反映されているのか確認してみました

プロセスを確認する

ps で java のプロセスを確認してみます

# ps auxwww 24
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
tomcat       24  141  7.2 5240136 585088 ?      Sl   10:50   0:22 /usr/bin/java .... -XX:MaxMetaspaceSize=128M .... -XX:MaxMetaspaceSize=256M .... org.apache.catalina.startup.Bootstrap start

128Mのものが共通イメージで JAVA_OPTS へ指定したもの、256Mのものが個別のイメージで CATALINA_OPTS へ指定したものです java へ指定されていることはわかりましたが、反映されているかはわかりません

Javaの構成情報を確認する

jinfo でJavaの構成情報を確認してみます Dockerコンテナで起動しているので、権限を与える必要がありました

docker run --privileged ....

-flags オプションを指定して確認してみます

# jinfo -flags 24
Attaching to process ID 23, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.152-b16
Non-default VM flags: .... -XX:MaxMetaspaceSize=268435456 ....
Command line:  .... -XX:MaxMetaspaceSize=128M .... -XX:MaxMetaspaceSize=256M ....

"-XX:MaxMetaspaceSize"の値が反映されていることがわかりました