Tomcat线程池优化实战指南
一 关键参数与默认值
| 参数 | 默认值 | 作用要点 |
|---|---|---|
| maxThreads | 200 | 同时处理请求的最大工作线程数,调大可提升并发但会增加上下文切换与内存开销 |
| minSpareThreads | 25 | 最小空闲线程数,保证突发流量有线程可用 |
| maxSpareThreads | 75 | 最大空闲线程数,超出将被回收 |
| maxIdleTime | 60000 ms | 线程最大空闲时间,超过且超过 minSpareThreads 将被回收 |
| maxConnections | BIO:maxThreads;NIO:10000;APR:8192 | 同时接受的 TCP 连接上限;达到后新连接进入队列或被拒绝 |
| acceptCount | 100 | 当所有工作线程忙时,等待队列的最大长度;队列满则拒绝 |
| connectionTimeout | 20000 ms | 连接建立后等待请求数据的超时时间 |
| maxQueueSize(Executor) | Integer.MAX_VALUE | 任务队列长度;默认几乎无界,建议显式设置 |
| prestartminSpareThreads | false | 启动时是否预先创建 minSpareThreads 个线程 |
二 配置方法与示例
<Executor name="tomcatThreadPool"
namePrefix="catalina-exec-"
maxThreads="500"
minSpareThreads="50"
maxSpareThreads="300"
maxIdleTime="60000"
maxQueueSize="1000"
prestartminSpareThreads="true"/>
<Connector port="8080"
protocol="org.apache.coyote.http11.Http11Nio2Protocol"
executor="tomcatThreadPool"
connectionTimeout="20000"
redirectPort="8443"
enableLookups="false"
compression="on"
compressionMinSize="2048"
compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json"
URIEncoding="UTF-8"/>
<Connector port="8080"
protocol="org.apache.coyote.http11.Http11Nio2Protocol"
maxThreads="500"
minSpareThreads="50"
maxSpareThreads="300"
maxIdleTime="60000"
connectionTimeout="20000"
redirectPort="8443"
acceptCount="1000"
enableLookups="false"
compression="on"
compressionMinSize="2048"
compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json"
URIEncoding="UTF-8"/>
server:
tomcat:
max-threads: 500
accept-count: 1000
max-connections: 20000
min-spare-threads: 50
三 调参方法与容量估算
四 监控与常见陷阱
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。