Tomcat依赖Java环境,需先安装JDK。推荐使用OpenJDK(如java-1.8.0-openjdk),步骤如下:
sudo yum update -ysudo yum install java-1.8.0-openjdk-devel -yjava -version(需显示Java版本信息)/etc/profile,添加以下内容并执行source /etc/profile:export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
/opt/tomcat):wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.56/bin/apache-tomcat-9.0.56.tar.gz
tar -zxvf apache-tomcat-9.0.56.tar.gz -C /opt/
mv /opt/apache-tomcat-9.0.56 /opt/tomcat
tomcat用户(需提前创建:sudo groupadd tomcat; sudo useradd -M -s /bin/nologin -g tomcat tomcat):sudo chown -R tomcat:tomcat /opt/tomcat
sudo chmod +x /opt/tomcat/bin/*.sh
/etc/systemd/system/tomcat.service,内容如下:[Unit]
Description=Apache Tomcat 9 Servlet Container
After=network.target
[Service]
Type=forking
Environment="JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk"
Environment="CATALINA_PID=/opt/tomcat/temp/tomcat.pid"
Environment="CATALINA_HOME=/opt/tomcat"
Environment="CATALINA_BASE=/opt/tomcat"
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
User=tomcat
Group=tomcat
Restart=on-failure
[Install]
WantedBy=multi-user.target
加载服务并启动:sudo systemctl daemon-reload; sudo systemctl enable tomcat; sudo systemctl start tomcatJVM内存配置直接影响Tomcat性能,需根据服务器内存和应用需求调整。编辑$CATALINA_HOME/bin/catalina.sh(或/etc/sysconfig/tomcat),添加/修改JAVA_OPTS:
JAVA_OPTS="-Xms1024m -Xmx2048m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -XX:+UseG1GC -XX:MaxTenuringThreshold=15"
-Xms1024m:初始堆内存(建议设为服务器内存的1/4);-Xmx2048m:最大堆内存(建议不超过服务器内存的1/2);-XX:MetaspaceSize/-XX:MaxMetaspaceSize:元空间大小(替代Java 7的PermGen);-XX:+UseG1GC:启用G1垃圾回收器(适合大内存、高并发场景);-XX:MaxTenuringThreshold:对象晋升老年代的年龄阈值(默认15)线程池是Tomcat处理并发请求的核心,需合理设置maxThreads(最大线程数)、minSpareThreads(最小空闲线程数)等参数。有两种配置方式:
编辑server.xml中的<Connector>标签,添加以下参数:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxThreads="500"
minSpareThreads="50"
acceptCount="1000" />
maxThreads:最大并发线程数(建议为CPU核心数的2-4倍,如4核服务器设为80-160);minSpareThreads:Tomcat启动时创建的空闲线程数(建议设为maxThreads的10%-20%,如50);acceptCount:请求队列长度(当所有线程繁忙时,允许排队的请求数,建议为maxThreads的1.5-2倍,如1000)在server.xml的<Service>标签内添加<Executor>,再引用它:
<Service name="Catalina">
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="500"
minSpareThreads="50"
maxIdleTime="60000"/>
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
</Service>
默认的HTTP/1.1协议可通过调整参数提升性能,或升级至HTTP/2:
protocol为org.apache.coyote.http11.Http11NioProtocol(默认已启用):<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
... />
Http2Protocol:<Connector port="8443" protocol="org.apache.coyote.http2.Http2Protocol"
SSLEnabled="true"
keystoreFile="/path/to/keystore.jks"
keystorePass="changeit"
maxThreads="200" />
<Connector ... compression="on" compressionMinSize="2048" compressableMimeType="text/html,text/xml,text/plain,application/json" />
/etc/security/limits.conf,添加以下内容(提高用户可打开文件数):* soft nofile 65536
* hard nofile 65536
/etc/sysctl.conf,添加以下内容(优化TCP连接):net.core.somaxconn = 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
生效配置:sudo sysctl -p/etc/rc.local,添加以下内容(避免内存碎片):echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
开放Tomcat端口(默认8080),允许外部访问:
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --reload
验证端口开放:sudo firewall-cmd --zone=public --query-port=8080/tcp(返回yes表示成功)
catalina.out(位于$CATALINA_HOME/logs)查看启动和运行日志,排查错误;jconsole、jvisualvm工具监控堆内存、线程、GC情况;以上配置需根据实际业务场景(如并发量、应用类型)进行调整,建议在测试环境验证后再应用于生产环境。