Search code examples
unixtomcatparameterscatalinasetenv

Unexpected JVM Parameters (-Xms512M and -Xmx1024M) appearing


I've configured Tomcat 8.5.32 on Ubuntu, and using setenv.sh I have configured -Xms4096M and -Xmx8192M. Contents below:

export JAVA_OPTS="-Djava.awt.headless=true -Xms4096M -Xmx8192M"

On startup, the catalina.out log shows the below. As you can see, I'm getting -Xms512M and -Xmx1024M in addition to those I am expecting.

19-Jul-2018 13:12:47.162 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version:        Apache Tomcat/8.5.32
19-Jul-2018 13:12:47.165 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Jun 20 2018 19:50:35 UTC
19-Jul-2018 13:12:47.166 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server number:         8.5.32.0
19-Jul-2018 13:12:47.166 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Linux
19-Jul-2018 13:12:47.166 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            4.4.0-130-generic
19-Jul-2018 13:12:47.167 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture:          amd64
19-Jul-2018 13:12:47.167 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:             /usr/lib/jvm/java-8-oracle/jre
19-Jul-2018 13:12:47.167 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version:           1.8.0_171-b11
19-Jul-2018 13:12:47.167 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor:            Oracle Corporation
19-Jul-2018 13:12:47.168 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         /opt/tomcat
19-Jul-2018 13:12:47.169 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         /opt/tomcat
19-Jul-2018 13:12:47.169 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties
19-Jul-2018 13:12:47.169 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
19-Jul-2018 13:12:47.171 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.awt.headless=true
19-Jul-2018 13:12:47.171 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xms4096M
19-Jul-2018 13:12:47.172 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xmx8192M
19-Jul-2018 13:12:47.172 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
19-Jul-2018 13:12:47.172 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
19-Jul-2018 13:12:47.172 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
19-Jul-2018 13:12:47.172 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xms512M
19-Jul-2018 13:12:47.173 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xmx1024M
19-Jul-2018 13:12:47.173 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:+UseParallelGC
19-Jul-2018 13:12:47.173 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs=
19-Jul-2018 13:12:47.176 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/opt/tomcat
19-Jul-2018 13:12:47.176 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/opt/tomcat
19-Jul-2018 13:12:47.177 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/opt/tomcat/temp

I've tried a few checks to make sure I'm not completely off-beam with what I'm trying to do, by tweaking the catalina.sh script to "echo" out a few details just before the final execution command. I got the following output, which mostly correlates with the catalina logs but still can't see where the extra arguments are coming from!!

Catalina Opt:       
Java Opt:       -Djava.awt.headless=true -Xms4096M -Xmx8192M -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
JDPA Opt:       
JSSE Opt:       -Djdk.tls.ephemeralDHKeySize=2048
Logging Config:     -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties
Class Path:     /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar
JDK Java Options:        --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
Run Java:       /usr/lib/jvm/java-8-oracle/bin/java
Endorsed Prop:      ignore.endorsed.dirs
Catalina Base:      /opt/tomcat
Catalina Home:      /opt/tomcat
Catalina PID:       

Does anybody know where else those additional -Xms and -Xmx arguments may be coming from? I've experimented, adding $CATALINA_OPTS to the setenv.sh file as well but I just get a third set of JVM params appearing in the catalina.out log.

Seems to be similar to the below but there is no answer: Tomcat java.lang.OutOfMemoryError: Java heap space


Solution

  • In my configuration of tomcat I had the following file configured to set some system defaults: /etc/systemd/system/tomcat.service

    This contained the following line (amongst others):Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'

    It hadn't occurred to me that the configuration would be in a location other than $CATALINA_HOME.