Tomcat 并发调优一般从 Connector(连接层)、线程池、JVM、操作系统、应用本身 五个层面来做。下面按“实用 + 常见生产配置”来讲。
Tomcat 有两种经典 I/O 模型:
| Connector | 适合场景 |
|---|---|
| NIO(默认) | 高并发、短连接、HTTP 接口 |
| APR/native | 超高性能、老项目 |
| BIO(已废弃) | ❌ 不建议 |
✅ 推荐:NIO(Tomcat 8+ 默认)
<Connector port="8080"
protocol="org.apache.coyote.http11.Http11NioProtocol"
... />
<Connector
port="8080"
protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="500"
minSpareThreads="50"
maxConnections="8192"
acceptCount="200"
connectionTimeout="20000"
enableLookups="false"
/>
| 参数 | 含义 | 建议 |
|---|---|---|
maxThreads |
处理请求的最大线程数 | 300~800 |
minSpareThreads |
最小空闲线程 | 50~100 |
maxConnections |
最大连接数(NIO) | 2048~10000 |
acceptCount |
队列长度(满时排队) | 100~300 |
connectionTimeout |
连接超时(ms) | 20000 |
enableLookups |
DNS 反向解析 | false |
推荐方式:使用共享线程池
<Executor name="tomcatThreadPool"
namePrefix="catalina-exec-"
maxThreads="800"
minSpareThreads="100"
maxQueueSize="Integer.MAX_VALUE"/>
Connector 引用:
<Connector executor="tomcatThreadPool"
port="8080"
protocol="org.apache.coyote.http11.Http11NioProtocol"
maxConnections="8192"
acceptCount="200"/>
✅ 好处:
-Xms4g
-Xmx4g
-Xmn2g
-XX:+UseG1GC
-XX:MaxGCPauseMillis=200
-Xms4g
-Xmx4g
-XX:+UseG1GC
-XX:MaxGCPauseMillis=200
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/opt/logs/heapdump.hprof
ulimit -n
建议:
* soft nofile 65535
* hard nofile 65535
net.core.somaxconn = 4096
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_tw_reuse = 1
❌ 不要在请求中:
✅ 使用:
<Connector
keepAliveTimeout="30000"
maxKeepAliveRequests="100"
/>
| 场景 | maxThreads |
|---|---|
| 普通接口 | 300~500 |
| 高并发接口 | 600~1000 |
| 重计算 | 200~300 |
⚠️ 线程不是越多越好
线程数 ≈ CPU 核心数 × (1 + 等待时间 / 计算时间)
jstack pid | grep "catalina-exec"
wrkabJMeter<Executor name="tomcatThreadPool"
maxThreads="600"
minSpareThreads="100"/>
<Connector executor="tomcatThreadPool"
port="8080"
protocol="org.apache.coyote.http11.Http11NioProtocol"
maxConnections="8192"
acceptCount="200"
connectionTimeout="20000"
enableLookups="false"/>
Tomcat 并发调优 = Connector + 线程池 + JVM + OS + 应用架构
如果你愿意,可以告诉我:
我可以直接帮你算一套 精准参数。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。