什么是tomcat连接器
引用官方的连接器解释
The HTTP Connector element represents a Connector component that supports the HTTP/1.1 protocol. It enables Catalina to function as a stand-alone web server, in addition to its ability to execute servlets and JSP pages. A particular instance of this component listens for connections on a specific TCP port number on the server. One or more such Connectors can be configured as part of a single Service, each forwarding to the associated Engine to perform request processing and create the response.
所以连接器是一个请求处理组件,将socket输入转换为request对象,包装成一个servlet请求交给容器去执行
tomcat处理连接成员
- 排队队列:系统层面接收请求连接,当连接总数小于maxConection + acceptcount + 1时,会进行tcp三次握手,放入排队队列,当超出总数后会拒绝连接,和在排队队列中超时的连接不同
- 连接准备队列:maxConnection 所设置的最大连接数,从排队队列进入连接准备队列
- 接收线程:在连接准备队列未满时,将排队队列中的连接放入连接准备队列中
- 轮训线程:解耦连接队列和执行线程池,当有连接准备连接有读写时候,交给线程池执行
- 执行线程池:负责执行有读写的连接,线程池设置有 maxThreads,线程池中有空闲线程时,🈶️空闲线程执行,无空闲线程并且小于最大线程数量,则创建线程执行
所以同时最大处理并发量 = maxConnection + acceptcount+1,超出数量就拒绝连接
连接器相关配置说明
| 配置 | 说明 |
|---|---|
| acceptCount | 当达到 maxConnections 时,操作系统提供的接收连接请求队列的最大长度。操作系统可能会忽略此设置,并使用不同大小的队列。当队列已满时,操作系统可能会主动拒绝其他连接,或者这些连接可能会超时。默认值为 100。 |
| connectionTimeout | 连接器接受连接后,等待请求 URI 行显示的毫秒数。使用-1 表示无超时(即无限)。默认值为 60000(即 60 秒),但请注意,Tomcat 附带的标准 server.xml 将其设置为 20000(即 20 秒)。除非 disableUploadTimeout 设置为 false,否则读取请求正文(如果有)时也将使用该超时。 |
| keepAliveTimeout | 连接器在关闭连接前等待另一个 HTTP 请求的毫秒数。默认值是使用 connectionTimeout 属性设置的值。使用-1 表示无超时(即无限)。 |
| maxThreads | 该连接器创建的最大请求处理线程数,因此决定了可同时处理的最大请求数。如果未指定,该属性将设为 200。如果执行器与此连接器相关联,此属性将被忽略,因为连接器将使用执行器而不是内部线程池执行任务。需要注意的是,如果配置了执行器,为该属性设置的任何值都会被正确记录,但会被报告(例如通过 JMX)为-1,以表明该属性未被使用。 |
| minSpareThreads | 始终保持运行的最小线程数。这包括活动线程和空闲线程。如果未指定,则使用默认值 10。如果执行器与此连接器相关联,此属性将被忽略,因为连接器将使用执行器而不是内部线程池执行任务。需要注意的是,如果配置了执行器,那么为该属性设置的任何值都会被正确记录,但会被报告(例如通过 JMX)为-1,以表明该属性未被使用。 |
| maxConnections | 服务器在任何给定时间内接受和处理的最大连接数。达到此数量后,服务器将接受但不处理新的连接。在处理的连接数低于 maxConnections 时,服务器将再次开始接受和处理新连接。请注意,一旦达到限制,操作系统仍可根据 acceptCount 设置接受连接。默认值为 8192。仅对 NIO/NIO2 而言,将该值设置为-1 将禁用 maxConnections 功能,连接数将不被计算。 |