我正在运行具有tomcat 8.x.x的Tomee 7.1.0。根据tomcat文档,默认Http maxthreadcount 200和acceptCount100。我的理解是Tomcat将接收最大300请求。根据他们的文档,将处理200个请求,将100个队列中,超过300个将获得连接超时。
我编写了一个简单的Rest服务,并使用Thread.sleep将请求保留在rest方法内5分钟。
启动tomcat并使用JConsole,我正在监视线程计数(Catalina->线程池-> http-nio-8080- Attributes),CurrentThreadsBusy为0,连接计数为1。如果发送450请求,则CurrentThreadsBusy为200,根据他们的文档是正确的,但是ConnectionCount是450,我的REst客户端应该获得CONNECTION TIMEOUT,但是我不明白为什么?
在此期间,每个传入请求都需要一个线程 请求。如果收到的并发请求多于请求数 由当前可用的请求处理线程处理, 将创建最多配置的最大线程数( maxThreads属性的值)。如果同时进行 收到请求,它们堆积在服务器插座内 由连接器创建,直到配置的最大值( acceptCount属性)。任何其他同时请求将 收到“连接被拒绝”错误,直到有可用资源 处理它们。
为什么我的客户端在请求300后没有收到CONNECTION TIMEOUT异常?
其余(150)个请求如何在队列中挂起?