我使用Tomcat8.0.x和CentOS 7.3。我正在使用systemd启动Tomcat,下面是Unit文件:
# 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的最佳实践是什么?
谢谢,
发布于 2017-07-06 09:43:19
在命令行上,最后一个Xmx获胜,在您的示例中,Tomcat进程使用systemd值。
没有设置Xmx和Xms值的“最佳实践”。有一些优化JVM的最佳实践,其中设置正确的内存值是JVM的一部分。但是,要使这些有意义,您必须知道将部署到服务器上的应用程序类型。
https://serverfault.com/questions/859625
复制相似问题