Tomcat线程池配置
以Tomcat8.5为例,HTTP1.1
官方文档配置地址
https://tomcat.apache.org/tomcat-8.5-doc/config/http.html
<Connector port="8080" acceptCount="100" maxConnections="200" minSpareThreads="10"
maxThreads="200"/>
-
acceptCount:请求等到队列大小。当Tomcat没有空闲线程处理连接请求时,新来的链接请求将放入等待队列,默认为100。当队列超过acceptCount后新连接将被拒绝。
-
maxConnections:Tomcat能处理的最大并发连接数.当超过后还会接收连接并放入等待队列(acceptCount控制),连接会等待,不能被处理。BIO默认是maxThreads. 对于NIO和NIO2,默认值为10000。对于APR /native,默认值为8192。
仅对于NIO / NIO2,将该值设置为-1将禁用maxConnections功能,并且不计算连接数。
-
minSpareThreads:线程池最小线程数,默认为10。该配置指定线程池可以维持的空闲线程数量。(始终保持运行状态的最小线程数。 这包括活动线程和空闲线程。 如果未指定,则使用默认值10。 如果执行程序与此连接器相关联,则此属性将被忽略,因为连接器将使用执行程序而不是内部线程池执行任务。 请注意,如果配置了执行程序,则将正确记录为此属性设置的任何值,但会将其报告为(例如,通过JMX)-1,以表明未使用该值。)
-
maxThreads:线程池最大线程数,默认为200。当线程池空闲一段时间后会解释放到只保留minSpareThreads个线程。
举例,假设maxThreads=100,maxConnections=50,acceptCount=50,假设并发请求为200,则50个线程并发处理50个并发连接,50个连接进入等待队列,剩余100个将被拒绝。也就是说Tomca最大并发线程数是由maxThreads和maxConnections中最小的一个决定的。BIO场景下maxConnections和maxThreads是一样的,当我们需要一个长连接场景时,应使用NIO模式,并发连接是大于线程数的。