参数名 | 描述 |
maxThreads | Tomcat线程池最多能起的线程数;默认值为200;若是执行器与此链接器关联,则此属性将被忽略,由于链接器将使用执行器而不是内部线程池执行任务。tomcat 注意:若是一个执行器配置设置该属性的任何值,只会被正确记录但它将报告(例如经过JMX)为-1明确表示不使用。多线程 |
maxConnections | Tomcat最多能并发处理的请求。当链接达到maxThreads后,新的链接会接收,但不会处理。额外的链接将一直阻塞在队列中,直到链接数小于maxThreads。并发 注意:队列的最大值是acceptCount。性能 默认值因链接器不一样:NiO和NIO2默认是10000;对于APR /native,默认值是8192。spa 注意:若是置为-1,即禁用maxThreads功能,链接数将再也不计数。线程 |
acceptCount | Tomcat维护最大的对列数;在队列满时,收到的任何请求都将被拒绝。默认值是100。 |
minSpareThreads | Tomcat初始化的线程池大小或者说Tomcat线程池最少会有这么多线程。若是未指定,则使用10的默认值。若是执行器与此链接器关联,则此属性将被忽略,由于链接器将使用执行器而不是内部线程池执行任务。队列 注意:若是一个执行器配置设置该属性的任何值,只会正确记录但它将报告(例如经过JMX)为-1明确表示不使用。ci |
比较容易弄混的是maxThreads和maxConnections这两个参数:io
maxThreads是指Tomcat线程池作多能起的线程数,而maxConnections则是Tomcat一瞬间作多可以处理的并发链接数。好比maxThreads=1000,maxConnections=800,假设某一瞬间的并发时1000,那么最终Tomcat的线程数将会是800,即同时处理800个请求,剩余200进入队列“排队”,若是acceptCount=100,那么有100个请求会被拒掉。
注意:根据前面所说,只是并发那一瞬间Tomcat会起800个线程处理请求,可是稳定后,某一瞬间可能只有不多的线程处于RUNNABLE状态,大部分线程是TIMED_WAITING,若是你的应用处理时间够快的话。因此真正决定Tomcat最大可能达到的线程数是maxConnections这个参数和并发数,当并发数超过这个参数则请求会排队,这时响应的快慢就看你的程序性能了。table