tomcat - Tomcat maxThreads 是接受线程或请求处理线程的配置
问题描述
我关注oracle doc,想知道 tomcat maxThreads 配置是做什么用的?接受者线程或请求处理线程?
作为 oracle 文档
线程池中的请求处理线程然后从队列中获取连接并为请求提供服务。
拾取做什么:它是否弹出()队列中的连接并处理此连接或请求处理线程仅侦听来自连接队列中的连接的请求?
谢谢
解决方案
正如问题Tomcat - maxThreads vs maxConnections中所解释的,该maxThreads
属性是Executor
用于处理请求的大小。maxThreads
最多将同时处理多个请求。
在 Tomcat 8.5 及更高版本上,所有连接器类型也使用一个接受器线程,它只接受最多maxConnections
连接。超出限制的那些连接仍保留在操作系统的队列中(该acceptCount
属性是操作系统对此类队列首选大小的提示)。
然而,Tomcat Coyote 架构的其余部分与 Oracle iPlanet Web Server 的架构明显不同,并且取决于所使用的连接器类型。
您可以在本文中阅读 NIO 连接器的详细信息。基本上:
服务器通过使用
Selector
s 轮询套接字来对网络事件做出反应。这样一个线程可以为所有客户端连接提供服务。只有 3 个线程处理网络 I/O:
- ,
Acceptor
它只接受新的连接并将它们发送给轮询器, - the
Poller
,它响应读/写事件并将它们分派给请求执行器, - the
BlockPoller
,它在9.0.47版本中消失并处理了对ServletInputStream
and的阻塞操作ServletOutputStream
。接受了它的Poller
任务。
- ,
没有连接队列。上面提到的线程只是将
Runnable
任务提交给执行者。executor 内部有一个Runnable
s 队列,每个线程在空闲时从那里选择一个任务。
推荐阅读
- reactjs - React native changing img with state Error
- php - Laravel PHP unit with code coverage giving error PHPUnit\Framework\Exception: PHP Fatal error: Uncaught Error: Class 'Route' not found
- php - How to connect data of add user new field with content type new field?
- xamarin.forms - does Xamarin.Forms Style support variable/parameter from applied target?
- nginx - How add nginx-ingress custom health check behind a nginx reverse proxy
- ruby-on-rails - 无法更新数据库形式的数据
- python - Webscraping with Python and Selenium
- php - 我的 Apache2 RewriteEngine On 和 AllowOverride All 更改是否安全?
- azure - selection of task in release pipeline in azure devops
- c# - Best practice exporting List
in C# for COM Interop