目录
五、minProcessors 服务器创建时的最小处理线程数
一、Connector配置
tomcat的配置文件conf/server.xml 中maxConnections、maxThreads、acceptCount的具体含义是什么呢?参考官方文档,对三者的含义说明如下:
一、accept-count:最大等待数
官方文档的说明为:当所有的请求处理线程都在使用时,所能接收的连接请求的队列的最大长度。当队列已满时,任何的连接请求都将被拒绝。accept-count的默认值为100。
详细的来说:当调用HTTP请求数达到tomcat的最大线程数时,还有新的HTTP请求到来,这时tomcat会将该请求放在等待队列中,这个acceptCount就是指能够接受的最大等待数,默认100。如果等待队列也被放满了,这个时候再来新的请求就会被tomcat拒绝(connection refused)。
二、maxConnections:最大连接数
官方文档的说明为:
这个参数是指在同一时间,tomcat能够接受的最大连接数。对于Java的阻塞式BIO,默认值是maxthreads的值;如果在BIO模式使用定制的Executor执行器,默认值将是执行器中maxthreads的值。对于Java 新的NIO模式,maxConnections 默认值是10000。
对于windows上APR/native IO模式,maxConnections默认值为8192,这是出于性能原因,如果配置的值不是1024的倍数,maxConnections 的实际值将减少到1024的最大倍数。
如果设置为-1,则禁用maxconnections功能,表示不限制tomcat容器的连接数。
maxConnections和accept-count的关系为:当连接数达到最大值maxConnections后,系统会继续接收连接,但不会超过acceptCount的值。
三、maxThreads:最大线程数
每一次HTTP请求到达Web服务,tomcat都会创建一个线程来处理该请求,那么最大线程数决定了Web服务容器可以同时处理多少个请求。maxThreads默认200,肯定建议增加。但是,增加线程是有成本的,更多的线程,不仅仅会带来更多的线程上下文切换成本,而且意味着带来更多的内存消耗。JVM中默认情况下在创建新线程时会分配大小为1M的线程栈,所以,更多的线程异味着需要更多的内存。线程数的经验值为:1核2g内存,线程数经验值200;4核8g内存,线程数经验值800。
四、connectionTimeout 连接超时
connectionTimeout 连接超时 ,网络连接超时,假设设置为0表示永不超时,这样设置隐患巨大,通常可设置为30000ms,默认60000ms。
五、minProcessors 服务器创建时的最小处理线程数
minProcessors 服务器创建时的最小处理线程数 ,用于提高系统处理性能,默认值为 10
六、maxProcessors 服务器同时最大处理线程数
maxProcessors 服务器同时最大处理线程数 ,即:并发处理的最大请求数,默认值为 75
七、URIEncoding URL统一编码
八、maxIdleTime: 最大空闲时间
maxIdleTime: 最大空闲时间,超过这个空闲时间,且线程数大于minSpareThreads的,都会被回收,默认值1分钟
二、Tomcat的高效配置
明白了 Tomcat的maxConnections、maxThreads、acceptCount三大配置之后,可以通过修改conf/server.xml配置文件来改变这三个值,一个标准的示例如下
<Connector
port="8081"
protocol="HTTP/1.1"
connectionTimeout="30000"
redirectPort="8443"
maxThreads="800"
minSpareThreads="300"
maxSpareThreads="800"
acceptCount="800"
compression="on"
compressionMinSize="2048"
/>
三、参考
tomcat的maxConnections、maxThreads、acceptCount_tomcat maxthreads_妙明元心的博客-CSDN博客