除了 maxThreads(最大工作线程数),Tomcat 的 Connector 组件还有一系列核心参数直接影响并发能力、性能、稳定性、安全性,需结合业务场景配套配置。以下按「核心优先级」分类梳理关键参数,包含作用、默认值、调优建议和配置示例:
这类参数控制 Tomcat 线程池和连接的生命周期,是 maxThreads 的「配套参数」,必须同步调整。
配置示例(外置 Tomcat server.xml):
<Connector
port="8080"
protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="800" <!-- 核心线程上限 -->
minSpareThreads="50"
acceptCount="500"
maxConnections="20000"
maxKeepAliveRequests="500"
keepAliveTimeout="30000"
connectionTimeout="30000"
/>
Spring Boot 配置(application.yml):
server:
tomcat:
threads:
max: 800
min-spare: 50
accept-count: 500
max-connections: 20000
keep-alive:
max-requests: 500
timeout: 30s
connection-timeout: 30s
这类参数保证请求 / 响应的编码和协议解析正确,是「必配项」。
配置示例:
<Connector
port="8080"
protocol="org.apache.coyote.http11.Http11NioProtocol" <!-- NIO 模型 -->
URIEncoding="UTF-8"
useBodyEncodingForURI="true"
enableLookups="false"
/>
这类参数通过压缩、限流等方式减少网络开销,适合「大响应体、高带宽消耗」场景。
配置示例:
<Connector
port="8080"
compression="on"
compressionMinSize="2048"
compressibleMimeType="text/html,text/xml,text/plain,application/json"
limitRequestLine="8192"
limitRequestParams="2000"
/>
若业务需 HTTPS 访问,需配置 SSL 相关参数(需先通过 keytool 生成证书)。
HTTPS 配置示例:
<Connector
port="443" <!-- HTTPS 默认端口 -->
protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true"
scheme="https"
secure="true"
keystoreFile="conf/localhost.jks"
keystorePass="123456"
keyAlias="localhost"
sslProtocol="TLS"
ciphers="TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"
/>
这类参数适合「超高性能要求、特殊业务场景」,一般无需调整,需压测验证后优化。
以下是 4 核 8G 服务器、IO 密集型业务(如电商接口)的完整 Connector 配置,包含上述所有核心参数:
<Service name="Catalina">
<Connector
port="8080"
protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="800"
minSpareThreads="50"
acceptCount="500"
maxConnections="20000"
maxKeepAliveRequests="500"
keepAliveTimeout="30000"
connectionTimeout="30000"
URIEncoding="UTF-8"
useBodyEncodingForURI="true"
enableLookups="false"
compression="on"
compressionMinSize="2048"
compressibleMimeType="text/html,text/xml,text/plain,application/json"
limitRequestLine="8192"
processorCache="800"
tcpNoDelay="true"
soKeepAlive="true"
redirectPort="443"
/>
<Connector
port="443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true"
scheme="https"
secure="true"
keystoreFile="conf/localhost.jks"
keystorePass="123456"
keyAlias="localhost"
sslProtocol="TLS"
ciphers="TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"
maxThreads="800"
minSpareThreads="50"
acceptCount="500"
maxConnections="20000"
/>
</Service>
若使用 Spring Boot,无需修改 server.xml,直接在 application.yml 配置:
server:
port: 8080
connection-timeout: 30s
tomcat:
threads:
max: 800
min-spare: 50
accept-count: 500
max-connections: 20000
keep-alive:
max-requests: 500
timeout: 30s
uri-encoding: UTF-8
compression:
enabled: true
min-response-size: 2048
mime-types: text/html,text/xml,text/plain,application/json
processor-cache: 800
tcp-no-delay: true
so-keep-alive: true
ssl:
key-store: classpath:localhost.jks
key-store-password: 123456
key-alias: localhost
protocol: TLS
- 生效规则:外置 Tomcat 优先读取
server.xml,Spring Boot 内嵌 Tomcat 优先读取 application.yml/ 代码配置;
- 验证方式:
- 启动日志:查看
catalina.out 或 Spring Boot 启动日志,搜索参数名确认配置生效;
- Tomcat 管理端:访问
http://localhost:8080/manager/html,查看 Connector 状态;
- 压测验证:用 JMeter 模拟高并发,观察响应时间、CPU / 内存使用率,逐步调优。
Tomcat 参数配置的核心逻辑是「基础参数保可用,线程池参数保并发,性能参数提效率,安全参数保合规」:
- 必配:
maxThreads + minSpareThreads + acceptCount + maxConnections + URIEncoding(保证并发和基础功能);
- 推荐:
compression + maxKeepAliveRequests(提升传输效率);
- 强制(生产):HTTPS 相关参数(保证数据安全);
- 慎用:高级调优参数(如
processorCache),需压测验证后调整。
所有参数均需结合服务器硬件(核心数 / 内存)、业务场景(IO/CPU 密集型)、并发量综合调整,避免「盲目调大参数」导致线程上下文切换、内存溢出等问题。