关于Xmx和Xms Tomcat参数

我在CentOS 7.3上使用了Tomcat 8.0.x。 我使用systemd来启动Tomcat,这里是单元文件:

# Systemd unit file for tomcat [Unit] Description=Apache Tomcat Web Application Container After=syslog.target network.target [Service] Type=forking Environment=JAVA_HOME=/usr/lib/jvm/jre Environment=CATALINA_PID=/opt/tomcat/tomcat-instances/tomcat.pid Environment=CATALINA_HOME=/opt/tomcat/tomcat-engine Environment=CATALINA_BASE=/opt/tomcat/tomcat-instances/ Environment='CATALINA_OPTS=-Xms128M -Xmx1024M -server -XX:+UseParallelGC' Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom' ExecStart=/opt/tomcat/tomcat-instances/bin/startup.sh ExecStop=/opt/tomcat/tomcat-instances/bin/shutdown.sh #ExecStop=/bin/kill -15 $MAINPID User=tomcat Group=tomcat [Install] WantedBy=multi-user.target 

我们可以看到“Xms128M和-Xmx1024m”

在setenv.sh文件中我们有这个:

 export JAVA_OPTS="-Xms256m -Xmx2048m" 

所以当我做一个“ps -ef | grep tomcat”时:

 tomcat 14051 1 2 09:06 ? 00:00:50 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-3.b12.el7_3.x86_64/jre/bin/java -Djava.util.logging.config.file=/opt/tomcat/tomcat-instances/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Xms256m -Xmx2048m -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Xms128M -Xmx1024M -server -XX:+UseParallelGC -Djava.endorsed.dirs=/opt/tomcat/tomcat-engine/endorsed -classpath /opt/tomcat/tomcat-engine/bin/bootstrap.jar:/opt/tomcat/tomcat-engine/bin/tomcat-juli.jar -Dcatalina.base=/opt/tomcat/tomcat-instances/ -Dcatalina.home=/opt/tomcat/tomcat-engine -Djava.io.tmpdir=/opt/tomcat/tomcat-instances/temp org.apache.catalina.startup.Bootstrap start 

我们可以看到两个值:“-Xms256m -Xmx2048m”和“-Xms128M -Xmx1024M”

Tomcat使用哪个参数? 单元文件或setenv.sh? 什么是configurationXmx的最佳实践?

谢谢,

在命令行中,最后一个Xmx获胜,在你的情况下,Tomcat进程使用systemd值。

没有设置Xmx和Xms值的“最佳实践”。 有一些调整JVM的最佳实践,其中设置正确的内存值是其中的一部分。 但是,为了使这些有意义,您必须知道将哪种types的应用程序部署到服务器。