Tomcat线程池原理
参数解释
maxThreads:最大线程数,tomcat能创建来处理请求的最大线程数(默认值200个线程,1个线程处理1个请求)
acceptCount:最大等待队列数,请求并发大于tomcat线程池的处理能力,则被放入等待队列等待被处理(默认值100,超过此数tomcat直接拒绝)
connectionTimeout:客户端和8080服务器建立连接的超时时间,单位:毫秒,设置为0表示永不超时,这样设置有隐患的,通常可设置为30000毫秒
线程池原理
场景1
当同时并发的请求数<200,tomcat启动的线程则不会达到maxThreads,故8080服务进1个请求,就出1个线程对接,过程即 客户端–A--C
场景2
当同时并发的请求数>200,tomcat启动的线程则会达到maxThreads,故8080服务进1个请求,tomcat会把此请求放入等待队列,等待空闲线程
场景3
当同时并发的请求数>200,acceptCount排队数>100,故8080服务进1个请求,tomcat会直接拒绝此请求,返回connection refused
总结
maxThreads值不断上升原因
1、并发请求量大
2、代码有瓶颈造成占用的线程不能释放
acceptCount值不断上升原因
1、并发请求量大,已达到maxThreads值
2、代码有瓶颈造成占用的线程不能释放
connectionTimeout
网络或被测服务压力大
connection refused
并发请求量大于maxThreads+acceptCount总和