Tomcat线程池配置主要通过server.xml文件或Spring Boot的application.yml文件完成,核心参数及配置要点如下:
| 参数 | 默认值 | 作用 | 参考来源 |
|---|---|---|---|
maxThreads |
200 | 最大工作线程数,决定并发处理能力,I/O密集型建议设为CPU核数×2-4。 | |
minSpareThreads |
10 | 最小空闲线程数,避免频繁创建线程,建议设为maxThreads的20%-50%。 |
|
acceptCount |
100 | 等待队列长度,当所有线程繁忙时,新请求进入队列,队列满则拒绝请求。 | |
connectionTimeout |
20000 | 连接超时时间(毫秒),建议设置为5-30秒,避免长时间占用连接。 | |
protocol |
HTTP/1.1 | 连接器协议,高并发场景推荐使用HTTP/1.1+NIO(非阻塞IO)。 |
server.xml(推荐)在<Service>标签内添加<Executor>定义线程池,再在<Connector>中引用:
<!-- 定义线程池 -->
<Executor name="tomcatThreadPool"
namePrefix="tomcat-exec-"
maxThreads="800"
minSpareThreads="200"
acceptCount="1600"
maxIdleTime="60000" />
<!-- 引用线程池的Connector -->
<Connector executor="tomcatThreadPool"
port="8080"
protocol="HTTP/1.1"
connectionTimeout="30000"
acceptCount="1600" />
说明:
name:线程池唯一标识,需与Connector中的executor属性一致。maxIdleTime:空闲线程存活时间(毫秒),超过则被回收。application.yml)server:
tomcat:
max-threads: 800 # 最大线程数
min-spare-threads: 200 # 最小空闲线程数
accept-count: 1600 # 等待队列长度
connection-timeout: 30000 # 超时时间(毫秒)
说明:
server.xml,直接通过配置文件生效。maxThreads设为CPU核数×1-2,minSpareThreads设为CPU核数。maxThreads设为CPU核数×2-4,minSpareThreads设为CPU核数×2。LinkedBlockingQueue)并设置acceptCount。AbortPolicy(直接拒绝),高并发场景可改为CallerRunsPolicy(由调用线程执行任务,避免丢弃请求)。jconsole或VisualVM监控tomcat_threads_active(活跃线程数)和tomcat_threads_queue(队列积压量),动态调整参数。maxThreads过大可能导致内存溢出(OOM),建议不超过服务器内存的50%。NIO协议(protocol="HTTP/1.1"默认支持),避免BIO的阻塞问题。maxActive小于Tomcat线程数,避免数据库成为瓶颈。参考来源: