原理:
1个请求,tomcat出一个线程,tomcat给映射到webapps进行处理请求,处理完之后把结果返回给tomcat,tomcat通过8080端口给客户端返回结果。经过这个闭环,tomcat线程才能释放。
tomcat不参与代码计算,主要是对接用户请求,返回用户结果。
用到的三个参数
maxThreads 默认值200,tomcat可同时处理的最大线程数
acceptcount 默认值100
connectionTimeout 默认值20000,20秒,客户端与8080建立连接的超时时间
三个场景
场景1:
当同时并发的请求书<200,tomcat启动的线程则不会达到maxThreads,故8080服务进一个请求,就会出一个线程对接。
场景2:
当同时并发的请求书>200 ,tomcat启动的线程则会达到maxThreads,故8080服务进一个请求,tomcat会把此请求放入等待队列,等待空闲线程。
场景3:
当同时并发的请求数>200,acceptcount>100,比如客户端每秒发310个并发请求,故8080服务进一个请求,tomcat会直接拒绝此请求,返回connection refused
-----maxThreads为什么会不断上升?
1.并发请求量大
2. 代码有瓶颈,造成占用的线程不能释放
------acceptcount不断上升的原因?
- 并发请求量大,已达到maxThreads
- 代码有瓶颈造成占用的线程不能释放
—connectTimeOut
20s之内连不上就超时
网络或被测服务压力大
客户端与8080建立连接的网络原因
-----connection refused
并发请求量大于maxThreads + acceptcount的总和