连接器是Tomcat处理HTTP请求的核心组件,其参数直接影响连接数并发能力。需修改server.xml中的<Connector>标签,关键参数如下:
maxThreads相同或稍大,如100)。protocol="org.apache.coyote.http11.Http11Nio2Protocol")。<Connector port="8080"
protocol="org.apache.coyote.http11.Http11Nio2Protocol"
maxThreads="500"
minSpareThreads="100"
acceptCount="100"
connectionTimeout="20000"
redirectPort="8443"/>
通过线程池集中管理线程资源,避免频繁创建/销毁线程的开销。在server.xml中先定义线程池,再关联到连接器:
<Executor name="tomcatThreadPool"
namePrefix="catalina-exec-"
maxThreads="500"
minSpareThreads="100"
maxQueueSize="100"
maxIdleTime="60000"/>
<Connector executor="tomcatThreadPool"
port="8080"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"/>
HTTP/2支持多路复用、头部压缩等功能,可提升高并发下的传输效率。需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"
type="RSA"/>
</SSLHostConfig>
</Connector>
合理的JVM配置可避免内存溢出和频繁垃圾回收,提升Tomcat稳定性:
-Xms)和最大堆(-Xmx)大小(建议设置为相同值,避免频繁扩容,如-Xms1024m -Xmx2048m)。-XX:MetaspaceSize和-XX:MaxMetaspaceSize,如-XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m)。-XX:+UseG1GC)。catalina.sh或catalina.bat):export JAVA_OPTS="-Xms1024m -Xmx2048m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -XX:+UseG1GC"
Linux系统需调整内核参数以支持高并发连接:
tomcat)的文件描述符限制需提高(避免“Too many open files”错误)。编辑/etc/security/limits.conf,添加:tomcat soft nofile 65536
tomcat hard nofile 65536
/etc/sysctl.conf,添加以下参数(提升TCP连接处理能力):net.core.somaxconn = 65535 # 系统允许的最大并发连接数
net.ipv4.tcp_max_syn_backlog = 65535 # SYN队列长度
net.ipv4.tcp_tw_reuse = 1 # 允许TCP连接复用
net.ipv4.ip_local_port_range = 1024 65535 # 本地端口范围
执行sysctl -p使配置生效。spring.datasource.hikari.maximum-pool-size=50)。enableLookups="false")、按需开启SSL(避免不必要的加密开销)。maxThreads过高会导致内存消耗增加,过低会导致请求排队),建议在测试环境验证后再应用于生产环境。