以Tomcat8为例
配置方式一
<Connector port="8080" acceptCount="100" maxConnections="200"
minSpareThreads="10" maxThreads="200"/>
acceptCount : 请求等待队列大小,当tomcat没有控线线程处理连接请求时,新的请求进入等待队列,默认为100,当超出 acceptCount后,新的请求被拒绝
maxConnections : tomcat能处理的最大并发连接数,超出进入等待队列(acceptCount控制),连接会等待,不能被处理
minSpareThreads :线程池最小线程数,默认为10,该配置指定线程池可以维持的空闲线程数量
maxThreads :线程池最大线程数,默认200,当线程池空闲后会释放,保留minSpareThreads数量
配置方式二
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="150" minSpareThreads="4"/>
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
tomcatm默认是没有开启的 在server.xml里面 是被注释的需要手动开启
namePrefix:创建的Tomcat线程名字的前缀
minSpareThreads :线程池最小线程数,默认为4
maxThreads :线程池最大线程数 默认为150
Executor实现的线程池,可以有更丰富的配置 如下:
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
deamon="true" maxThreads="150" minSpareThreads="4"
maxIdleTime="60000" maxQueueSize="Integer.MAX_VALUE"
prestartminSpareThreads="false"/>
<Connector executor="tomcatThreadPool"
port="8080" executorTerminationTimeoutMillis ="5000"/>
deamon : 是否守护线程运行,默认为true
maxIdleTime :空闲线程的存活时间 默认为60s,当线程空闲超时后,线程被回收
maxQueueSize :任务队列最大大小,默认为Integer.MAX_VALUE (2147483647 )这太大了 有点不合适
prestartminSpareThreads :是否在tomcat启动时就创建minSpareThreads个线程放入线程池,默认为false
executorTerminationTimeoutMillis :在停止executor时,等待请求处理线程终止的超时时间