我关注oracle文档,想知道tomcat maxthreads配置用于什么?接受线程还是请求处理线程?作为oracle文档线程池中的请求处理线程然后从队列中提取连接并为请求提供服务。拾取操作是什么:它是在队列中弹出一个连接并处理这个请求,还是只处理线程侦听连接队列中连接的请求?谢谢
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版中消失,并处理 ServletInputStream 及 ServletOutputStream . 这个 Poller 他接受了它的任务。没有连接队列。上面提到的线程只是提交 Runnable 将任务交给执行者。在内部,执行者有一个 Runnable s,每个线程在空闲时从那里选择一个任务。
maxThreads
Executor
maxConnections
acceptCount
Selector
Acceptor
Poller
BlockPoller
ServletInputStream
ServletOutputStream
Runnable
1条答案
按热度按时间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版中消失,并处理ServletInputStream
及ServletOutputStream
. 这个Poller
他接受了它的任务。没有连接队列。上面提到的线程只是提交
Runnable
将任务交给执行者。在内部,执行者有一个Runnable
s,每个线程在空闲时从那里选择一个任务。