HTTP2 アップグレードプロトコル
目次
はじめに
HTTP アップグレードプロトコル要素は、HTTP/2 プロトコルをサポートするアップグレードプロトコルコンポーネントを表します。このコンポーネントのインスタンスは、既存のHTTP/1.1 コネクタに関連付けられている必要があります。
HTTP/2 コネクタはノンブロッキング I/O を使用し、読み書きするデータがある場合にのみスレッドプールからコンテナスレッドを利用します。ただし、サーブレット API は基本的にブロッキングであるため、各 HTTP/2 ストリームはそのストリームの期間中、専用のコンテナスレッドを必要とします。
HTTP/2 を使用して処理されたリクエストには、以下の追加のリクエスト属性が使用可能です。
org.apache.coyote.connectionID
は HTTP/2 接続 ID を返します。org.apache.coyote.streamID
は HTTP/2 ストリーム ID を返します。
属性
共通属性
アップグレードプロトコルのすべての実装は、以下の属性をサポートしています。
属性 | 説明 |
---|---|
className |
これは |
標準実装
HTTP/2 アップグレードプロトコル実装は、上記にリストされている共通属性に加えて、以下の属性をサポートしています。
属性 | 説明 |
---|---|
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 機能を有効または無効にします。デフォルト値は 関連付けられたコネクタの useAsyncIO 属性が HTTP/2 sendfile 機能は、Windows でファイルのロックを引き起こすことが知られている MappedByteBuffer を使用します。 |
writeTimeout |
HTTP/2 フレームが部分的に書き込まれたときに、Tomcat が追加データの書き込みを待機する時間 (ミリ秒単位) です。負の値は無限タイムアウトとして扱われます。指定されていない場合、デフォルト値の |
HTTP/2 アップグレードプロトコルは、ネストされている HTTP コネクタ から以下の制限も継承します。
- allowedTrailerHeaders
- compressibleMimeType
- compression
- compressionMinSize
- maxCookieCount
- maxHttpHeaderSize
- maxHttpRequestHeaderSize
- maxParameterCount
- maxPostSize
- maxSavePostSize
- maxTrailerSize
- noCompressionUserAgents
ネストされたコンポーネント
このコンポーネントは、ネストされたコンポーネントをサポートしていません。
特別な機能
このコンポーネントは、特別な機能をサポートしていません。