Debian下Tomcat性能优化实操指南
一 基线检查与准备
二 连接器与线程池优化
<!-- HTTP/1.1 NIO2 -->
<Connector port="8080"
protocol="org.apache.coyote.http11.Http11Nio2Protocol"
connectionTimeout="20000"
redirectPort="8443"
maxThreads="500"
minSpareThreads="50"
maxConnections="10000"
acceptCount="100"
compression="on"
compressionMinSize="1024"
compressableMimeType="text/html,text/xml,text/css,text/javascript,application/json" />
<!-- HTTPS/HTTP2(Tomcat 8.5+) -->
<Connector port="8443"
protocol="org.apache.coyote.http2.Http2Protocol"
maxThreads="150"
SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeyFile="conf/localhost-rsa-key.pem"
certificateFile="conf/localhost-rsa-cert.pem"
certificateChainFile="conf/localhost-rsa-chain.pem"
type="RSA" />
</SSLHostConfig>
</Connector>
<Executor name="tomcatThreadPool"
namePrefix="catalina-exec-"
maxThreads="500"
minSpareThreads="50"
maxQueueSize="100" />
<Connector executor="tomcatThreadPool"
port="8080"
protocol="org.apache.coyote.http11.Http11Nio2Protocol"
connectionTimeout="20000"
redirectPort="8443" />
三 JVM与内存调优
# 示例:堆初始与最大一致,减少扩容抖动;启用G1GC
export CATALINA_OPTS="$CATALINA_OPTS \
-Xms2g -Xmx2g \
-XX:+UseG1GC \
-XX:MaxMetaspaceSize=512m \
-XX:+AlwaysPreTouch \
-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:${CATALINA_BASE}/logs/gc.log"
四 操作系统与网络优化
# limits.conf
tomcat soft nofile 65535
tomcat hard nofile 65535
# sysctl.conf
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
五 应用层与监控落地