关于Tomcat的Xmx与Xms参数

关于Tomcat的Xmx与Xms参数

我在 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?配置 Xmx 的最佳实践是什么?

谢谢你,

答案1

在命令行上,最后的 Xmx 获胜,在您的情况下,Tomcat 进程使用 systemd 值。

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

相关内容