HTTP2 升级协议
目录
介绍
HTTP 升级协议元素表示支持 HTTP/2 协议的升级协议组件。此组件的实例必须与现有的 HTTP/1.1 连接器 关联。
HTTP/2 连接器使用非阻塞 I/O,仅在有数据需要读写时才从线程池中使用容器线程。但是,由于 Servlet API 基本上是阻塞的,因此每个 HTTP/2 流在该流持续期间都需要一个专用的容器线程。
使用 HTTP/2 处理的请求将具有以下附加请求属性
org.apache.coyote.connectionID
将返回 HTTP/2 连接 IDorg.apache.coyote.streamID
将返回 HTTP/2 流 ID
属性
通用属性
升级协议的所有实现都支持以下属性
属性 | 说明 |
---|---|
className |
必须是 |
标准实现
除了上面列出的通用属性外,HTTP/2 升级协议实现还支持以下属性。
属性 | 说明 |
---|---|
initialWindowSize |
控制 Tomcat 向客户端通告的流的流控制窗口的初始大小。如果未指定,则使用默认值 |
keepAliveTimeout |
在没有活动流的情况下,Tomcat 在关闭连接之前等待 HTTP/2 帧之间的时间(以毫秒为单位)。负值将被视为无限超时。如果未指定,则使用默认值 |
maxConcurrentStreamExecution |
控制可以从容器线程池中分配线程的任何一个连接的最大流数。如果活动流多于可用线程,这些流将不得不等待流变为可用状态。如果未指定,将使用默认值 |
maxConcurrentStreams |
控制允许的任何一个连接的最大活动流数。如果客户端尝试打开多于此限制的活动流,则将使用 |
maxHeaderCount |
容器允许的请求中的最大标头数。将拒绝包含多于指定限制的标头的请求。小于 0 的值表示没有限制。如果未指定,将使用默认值 100。 |
maxTrailerCount |
容器允许的请求中的最大尾部标头数。将拒绝包含多于指定限制的尾部标头的请求。小于 0 的值表示没有限制。如果未指定,将使用默认值 100。 |
overheadContinuationThreshold |
非最终 |
overheadCountFactor |
在计算开销帧以确定连接的开销是否过高且应关闭时应用的因子。开销计数从 |
overheadResetFactor |
对于接收的每个重置帧,开销计数(请参阅 overheadCountFactor)增加的数量。如果未指定,将使用默认值 |
overheadDataThreshold |
低于此阈值的当前和之前的非最终 |
overheadWindowUpdateThreshold |
低于此阈值的当前和之前的 |
readTimeout |
当收到部分 HTTP/2 帧时,Tomcat 将等待其他数据的毫秒数。负值将被视为无限超时。如果未指定,将使用 |
streamReadTimeout |
当应用程序执行阻塞 I/O 读取且需要其他数据时,Tomcat 将等待流到达其他数据帧的毫秒数。负值将被视为无限超时。如果未指定,将使用 |
streamWriteTimeout |
当应用程序执行阻塞 I/O 写入且流和/或连接流控制窗口对于写入完成而言过小时,Tomcat 将等待流和/或连接到达其他窗口更新帧的毫秒数。负值将被视为无限超时。如果未指定,将使用 |
useSendfile |
使用此布尔属性启用或禁用 sendfile 功能。默认值为 如果关联的 Connector 的 useAsyncIO 属性设置为 HTTP/2 sendfile 功能使用 MappedByteBuffer,已知它会导致 Windows 上的文件锁定。 |
writeTimeout |
Tomcat 在 HTTP/2 帧部分写入时等待写入其他数据的时间(以毫秒为单位)。负值将被视为无限超时。如果未指定,将使用默认值 |
HTTP/2 升级协议还将继承嵌套的 HTTP 连接器 中的以下限制
- allowedTrailerHeaders
- compressibleMimeType
- compression
- compressionMinSize
- maxCookieCount
- maxHttpHeaderSize
- maxHttpRequestHeaderSize
- maxParameterCount
- maxPostSize
- maxSavePostSize
- maxTrailerSize
- noCompressionUserAgents
嵌套组件
此组件不支持任何嵌套组件。
特殊功能
此组件不支持任何特殊功能。