tomcat maxthreads是为接受线程或请求处理线程配置的

mrwjdhj3  于 2021-10-10  发布在  Java
关注(0)|答案(1)|浏览(263)

我关注oracle文档,想知道tomcat maxthreads配置用于什么?接受线程还是请求处理线程?
作为oracle文档
线程池中的请求处理线程然后从队列中提取连接并为请求提供服务。

拾取操作是什么:它是在队列中弹出一个连接并处理这个请求,还是只处理线程侦听连接队列中连接的请求?
谢谢

mbzjlibv

mbzjlibv1#

正如tomcat-maxthreads vs maxconnections问题中所解释的 maxThreads 属性是对象的大小 Executor 用于处理请求。不过是 maxThreads 将同时处理请求。
在tomcat 8.5和更高版本上,所有连接器类型也使用一个接受线程,它最多只接受 maxConnections 连接。超出限制的那些连接仍保留在操作系统的队列中( acceptCount 属性是操作系统对此类队列的首选大小的提示)。
但是,tomcat coyote的其余体系结构显然不同于oracle iplanet web服务器,并且取决于所使用的连接器类型。
您可以在本文中阅读nio连接器的详细信息。基本上:
服务器通过使用轮询套接字对网络事件作出React Selector S这样,一个线程就可以为所有客户端连接提供服务。
只有3个线程处理网络i/o:
这个 Acceptor ,它只接受新连接并将其发送到轮询器,
这个 Poller ,它响应读/写事件并将其发送给请求执行器,
这个 BlockPoller ,它在9.0.47版中消失,并处理 ServletInputStreamServletOutputStream . 这个 Poller 他接受了它的任务。
没有连接队列。上面提到的线程只是提交 Runnable 将任务交给执行者。在内部,执行者有一个 Runnable s,每个线程在空闲时从那里选择一个任务。

相关问题