HTTP/2 アップグレードプロトコル
目次
はじめに
HTTP アップグレードプロトコル要素は、HTTP/2プロトコルをサポートするアップグレードプロトコルコンポーネントを表します。このコンポーネントのインスタンスは、既存のHTTP/1.1 Connectorに関連付けられている必要があります。
HTTP/2コネクタは非ブロッキングI/Oを使用し、読み書きするデータがある場合にのみスレッドプールからコンテナスレッドを利用します。ただし、Servlet APIは基本的にブロッキングであるため、各HTTP/2ストリームはそのストリームの期間中、専用のコンテナスレッドを必要とします。
HTTP/2を使用して処理されたリクエストには、以下の追加リクエスト属性が利用可能です
org.apache.coyote.connectionID
はHTTP/2接続IDを返しますorg.apache.coyote.streamID
はHTTP/2ストリームIDを返します
属性
共通属性
アップグレードプロトコルのすべての実装は、以下の属性をサポートしています
属性 | 説明 |
---|---|
className |
これは |
標準実装
HTTP/2 アップグレードプロトコル実装は、上記の共通属性に加えて、以下の属性をサポートしています。
属性 | 説明 |
---|---|
discardRequestsAndResponses |
コンテナ内部のリクエストおよびレスポンス処理オブジェクトの再利用を有効または無効にするために使用できるブール値です。 |
initialWindowSize |
Tomcatがクライアントに通知するストリームのフロー制御ウィンドウの初期サイズを制御します。指定しない場合、デフォルト値の |
keepAliveTimeout |
アクティブなストリームがない場合、Tomcatが接続を閉じる前にHTTP/2フレーム間で待機する時間(ミリ秒)です。負の値は無限タイムアウトとして扱われます。指定しない場合、デフォルト値の |
maxConcurrentStreamExecution |
コンテナスレッドプールからスレッドを割り当てられる、任意の1つの接続に対する最大ストリーム数を制御します。利用可能なスレッドよりも多くのストリームがアクティブな場合、それらのストリームはストリームが利用可能になるまで待機する必要があります。指定しない場合、デフォルト値の |
maxConcurrentStreams |
任意の1つの接続で許可されるアクティブストリームの最大数を制御します。クライアントがこの制限を超えるアクティブストリームを開こうとすると、ストリームは |
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機能は、Windowsでファイルロックを引き起こすことが知られているMappedByteBufferを使用します。 |
writeTimeout |
HTTP/2フレームが部分的に書き込まれた際に、Tomcatが追加データを書き込むのを待機する時間(ミリ秒)です。負の値は無限タイムアウトとして扱われます。指定しない場合、デフォルト値の |
HTTP/2アップグレードプロトコルは、それがネストされているHTTP Connectorから以下の属性も継承します
- allowedTrailerHeaders
- compressibleMimeType
- compression
- compressionMinSize
- maxCookieCount
- maxHttpHeaderSize
- maxHttpRequestHeaderSize
- maxParameterCount
- maxPartCount
- maxPartHeaderSize
- maxPostSize
- maxSavePostSize
- maxTrailerSize
- noCompressionUserAgents
- server
- serverRemoveAppProvidedValues
ネストされたコンポーネント
このコンポーネントは、ネストされたコンポーネントをサポートしていません。
特殊機能
このコンポーネントは、特別な機能をサポートしていません。