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"の値が反映されていることがわかりました