Tomcat 线程调优的核心目标是:在硬件资源允许范围内,最大化吞吐量,同时控制延迟和避免资源耗尽。下面从关键参数 → 调优思路 → 常见场景 → 排查方法系统说明。
Tomcat(BIO 已废弃,默认 NIO):
大多数人说的“Tomcat 线程调优”,本质是在调 Executor 线程池
conf/server.xml
<Executor
name="tomcatThreadPool"
namePrefix="catalina-exec-"
maxThreads="200"
minSpareThreads="20"
maxIdleTime="60000"
prestartminSpareThreads="true"/>
<Connector
executor="tomcatThreadPool"
port="8080"
protocol="org.apache.coyote.http11.Http11NioProtocol"
acceptCount="100"
connectionTimeout="20000"/>
| 参数 | 含义 | 建议 |
|---|---|---|
| maxThreads | 最大工作线程数 | 核心调优项 |
| minSpareThreads | 最小空闲线程 | 避免突发创建 |
| acceptCount | 等待队列长度 | 防止连接拒绝 |
| maxConnections | 最大连接数 | NIO 默认 10000 |
| connectionTimeout | 连接超时 | 防止资源占用 |
线程数 ≈ CPU 核数 + 1
线程数 ≈ CPU 核数 × (1 + 等待时间 / 计算时间)
实际经验值:
⚠️ 不是越大越好,线程多 → 上下文切换成本上升
maxThreads=300
minSpareThreads=50
acceptCount=200
maxThreads=500
acceptCount=300
connectionTimeout=10000
maxThreads=200
acceptCount=50
超出直接拒绝,比拖死整个服务好
-XX:ThreadStackSize=256k
ulimit -n 65535
net.core.somaxconn=65535
# 查看线程数
ps -eLf | grep java | wc -l
# 线程栈
jstack pid > thread.txt
# Tomcat 状态页
server.xml 开启 Status Manager
Tomcat 线程调优 = 匹配业务 IO 特性 + 控制资源边界 + 配合 JVM 和系统参数
如果你愿意,可以告诉我:
我可以直接给你一套可落地的线程参数配置。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。