プロトコルは、デバイス間でデータをやり取りするための規則です。アプリケーションがネットワークサービスにアクセスする、人とコンピューターのやり取りの層で特に重要なプロトコルの 1 つが HTTP(Hypertext Transfer Protocol)です。
HTTP は広く使われているプロトコルで、複数のバージョンがあります。新しいバージョンほど、古いバージョンよりパフォーマンスが向上する機能が加わります。現在のインターネットでは HTTP/1.1 と HTTP/2 が広く使われています。HTTP/1.1 は 10 年以上使われてきましたが、2015 年に IETF(Internet Engineering Task Force)が HTTP/2 を導入し、ページ読み込み時間を短縮する機能をいくつか追加しました。HTTP/1.1 と HTTP/2 の違いの詳細は HTTP/2 versus HTTP/1.1 ↗ を参照してください。
| Free | Pro | Business | Enterprise | |
|---|---|---|---|---|
| 提供状況 | あり | あり | あり | あり |
Cloudflare では、オリジンへの HTTP/2 接続はデフォルトで有効です。
HTTP/2 to Origin を無効にする手順は次のとおりです。
-
Cloudflare ダッシュボードで Speed > Settings ページを開きます。
Settings を開く ↗ -
Protocol Optimization タブを開き、HTTP/2 to Origin のトグルを Off にします。
Cloudflare は、グローバルなエッジネットワークからオリジンサーバーへの HTTP/2 多重化に対応しています。受信リクエストごとに新しい TCP 接続を開くのではなく、複数の HTTP/2 ストリームが 1 本の長寿命 TCP 接続を共有します。接続の確立と切断のコストが大幅に減り、Cloudflare とオリジン間の効率とパフォーマンスが向上します。
多数のリクエストを少ない TCP 接続にまとめることで、オリジンが維持する必要があるアクティブ接続数が減ります。接続オーバーヘッドやリソース上限に敏感なバックエンドでは特に有効です。
新しいリクエストが届くと、Cloudflare はオリジンへの既存の HTTP/2 接続の再利用を試みます。
- 接続が同時ストリーム上限に達していなければ、同じ接続上でリクエストを多重化します。
- ストリーム上限に達している場合は、必要に応じて新しい TCP 接続を開きます。
接続は、アイドルになるか同時実行上限に達するまで維持され、再利用されます。
-
接続の再利用: Cloudflare はオリジンへの永続的な(keep-alive)TCP 接続を維持します。HTTP/2 のストリーム上限に達するか、接続がアイドルになるまで再利用が続きます。
-
アイドルタイムアウト(900 秒): アクティブなストリームがない状態が 900 秒続くと、Cloudflare はその接続を閉じます。閉じた接続を再利用しようとすると、
520エラーになることがあります。 -
Keep-alive: Cloudflare は、応答しないオリジンを検出するために、定期的な TCP keep-alive を送ります。プローブが 2 回連続で応答なしになると、接続はリセットされます。
- 最初のプローブは、無通信から約 30 秒後
- 2 回目のプローブは、その 15 秒後
-
接続の切断: 次の理由でも接続が閉じることがあります。
- 負荷分散の判断
- データセンターまたはノードのメンテナンス
- 最大同時実行上限への到達
- オリジンまたは中間ネットワークがアイドル接続を閉じた場合
| メリット | 説明 |
|---|---|
| TCP ハンドシェイクの削減 | 複数のリクエストが 1 本の長寿命 TCP 接続を共有し、接続の増減を抑えます。 |
| レイテンシの低減 | 繰り返しの TCP/TLS ハンドシェイクがなくなり、新規リクエストの往復遅延が減ります。 |
| オリジン負荷の軽減 | オリジンが管理する同時接続数が減り、リソースに余裕のないシステムでも負荷を抑えられます。 |
| 適応的なスケーリング | フェイルオーバーなどの急増時は、まず空きストリームを再利用し、必要に応じて新しい接続を開きます。 |
| プラン | デフォルト | 接続あたりの最大同時ストリーム数 | 設定可能か |
|---|---|---|---|
| Free / Pro / Business | デフォルトで有効 | 200 | いいえ |
| Enterprise | デフォルトで無効(接続あたり 1 ストリーム) | 1–200+ | はい |
- Free/Pro/Business: 多重化は自動で有効です。各接続は最大 200 の同時ストリームに対応します。
- Enterprise: 多重化は実質無効(1 ストリーム)で始まります。ゾーンごとに同時実行数を有効化し、設定できます(最大 200 以上の同時ストリーム)。
コネクション多重化は Free、Pro、Business ゾーンでデフォルト有効で、デフォルトでは最大 100 の同時ストリームを使います。Enterprise プランでは、ゾーンの最大同時ストリーム数(「多重化比率」と呼ばれることもあります)をダッシュボードまたは API で明示的に設定できます。
ダッシュボード
- Cloudflare ダッシュボード ↗ にログインし、アカウントを選びます。
- HTTP/2 to Origin を使うドメインを選びます。
- Speed > Optimization を選びます。
- Protocol Optimization タブを開きます。
- HTTP/2 to Origin で Configure を選び、必要に応じてストリーム設定を調整します。
API
Required API token permissions
At least one of the following token permissions is required:Zone Settings WriteZone Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/settings/origin_h2_max_streams" \
--request PATCH \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"value": 100
}'詳細は API ドキュメント を参照してください。
Terraform
resource "cloudflare_zone_setting" "example" {
zone_id = "<ZONE_ID>"
setting_id = "origin_h2_max_streams"
value = 50
}| 条件 | デフォルト / 範囲 | エラーコード | 説明 |
|---|---|---|---|
| Proxy Read Timeout | 125 秒(Enterprise は最大 6000 秒) | 524 |
オリジンの応答が遅すぎました。 |
| Proxy Idle Timeout | 900 秒(固定) | 520 |
アイドルのため接続が閉じられました。 |
| TCP Keep-Alive Interval | 最初は 30 秒、以降は 15 秒間隔 | 520 |
プローブが 2 回失敗すると、Cloudflare は接続をリセットします。 |
| TCP Handshake Timeout | 19 秒 | 522 |
オリジンが SYN ハンドシェイクを完了しませんでした。 |
| TCP ACK Timeout | 90 秒 | 522 |
オリジンがデータの確認応答を止めました。 |
フェイルオーバー時
トラフィックが急に切り替わるとき(オリジンのフェイルオーバーなど)、Cloudflare は可能な範囲でアクティブな接続を再利用します。同時実行上限に達すると、新しい接続を開きます。アクティブ接続数は一時的に増えることがありますが、全体の接続数は多重化なしより少なくなります。
長時間またはアイドルのリクエスト
- リクエストが 125 秒を超える場合(ストリーミングなど)は、Proxy Read Timeout を増やします(Enterprise のみ)。
- 900 秒より早く接続を閉じるオリジンでは接続の増減が増えることがありますが、Cloudflare は必要に応じて新しい接続を自動で再確立します。
5xx エラーの可能性
520 や 522 などの一部の 5xx エラーは、アイドルタイムアウトや到達不能なオリジンが原因のことがあります。処理能力の低いオリジンに対して同時実行数が高すぎると、同時リクエストのバーストでオリジンが過負荷になり、ストリームのリセットや短時間の 5xx スパイクにつながることがあります。これに遭遇した Enterprise のお客様は、Cloudflare のアカウントチームまたはサポートに同時実行上限の引き下げを依頼できます。オリジンへ同時に送るリクエスト数が減り、過負荷を防げます。
Free、Pro、Business プランは、接続あたり 200 の同時ストリームを使います。Enterprise ユーザーは 1〜200 以上のストリームを設定できます。
Cloudflare はまず既存の keep-alive 接続を再利用します。同時実行上限に達すると、必要に応じて新しい接続を開きます。急増時でも、総接続数は通常、多重化なしより少なくなります。
Enterprise ユーザーは同時実行上限を下げられます。Cloudflare はオリジンの SETTINGS_MAX_CONCURRENT_STREAMS も尊重するため、サーバー側でより厳しい上限を適用できます。Cloudflare の CDN には Cache Locking もあり、再検証時にオリジンへの並列リクエストを抑えます。詳細は 再検証 を参照してください。
はい。オリジンの HTTP/2 設定、または Cloudflare のゾーン設定を段階的に調整し、安全に同時実行数を増やせます。
Cloudflare はフラットな anycast ネットワークを運用しています。どのデータセンターからもオリジンへ直接接続でき、L1/L2 の階層はありません。オリジンへの接続は、世界中の複数データセンターから来る可能性があります。
いいえ。接続はオンデマンドで作成し、可能な範囲で再利用します。アイドル接続の永続プールはありません。
アイドル接続は、無通信が 900 秒続くと閉じられます。先回りして再開はしません。トラフィックが再開すると、新しい接続が作られます。
オリジンが閉じた場合、ネットワークエラーが起きた場合、または Cloudflare がメンテナンスや負荷の再配分を行う場合だけです。アクティブ接続にハードな最大寿命はありません。
オリジンが HTTP/2 に対応していない場合、Cloudflare は HTTP/1.1 接続を開始します。 ALPN ↗ で HTTP/2 対応を通知するサーバーに接続します。
サーバーが HTTP/2 に対応しているか不明な場合は、オリジンサーバーのドキュメントを確認するか、HTTP/2 実装のテストツール(例: h2spec ↗)を使うことを推奨します。