使用线程池,用较少的线程处理较多的访问,可以提高tomcat处理请求的能力。
使用方式:
首先,打开/conf/server.xml,增加
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="20" maxIdleTime="60000" />
最大线程500(一般服务器足以),最小空闲线程数20,线程最大空闲时间60秒。
然后,修改<Connector ...>节点,增加executor属性,如:
<Connector executor="tomcatThreadPool"
port="80"
protocol="HTTP/1.1"
maxThreads="600" //maxThreads:Tomcat可创建的最大的线程数,每一个线程处理一个请求;
minSpareThreads="100" //minSpareThreads:最小备用线程数,tomcat启动时的初始化的线程数;
maxSpareThreads="300"//maxSpareThreads:最大备用线程数,一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程;
connectionTimeout="60000"//connnectionTimeout:网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。
keepAliveTimeout="15000" //长连接保持的最长时间
maxKeepAliveRequests="1" //最大的长连接请求数
redirectPort="443"
....../>
acceptCount:指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,就是被排队的请求数,超过这个数的请求将拒绝连接。
enableLookups:是否允许DNS查询
注意:可以多个connector公用1个线程池。