HTTP2 のレイテンシ

· 機能

前回の投稿では、単一の接続を使用した HTTP2 と HTTP1 のパフォーマンスを比較しました(HTTP2 vs HTTP1 のパフォーマンスを参照)。本投稿ではレイテンシを導入した HTTP2 と HTTP1 の比較を示し、レイテンシが HTTP プロトコルのリクエストにどのように影響するかを説明します。

クライアントがリクエストを行うと、ネットワーク状況(トラフィック、サーバーまでの距離など)に応じて多少のレイテンシが発生します。レイテンシは HTTP 1.1 プロトコルに大きく影響します。多くのリクエストを送信する必要がある場合、まずリクエストを送信し、サーバーからの応答を待ち、次のリクエストを行う……というプロセスを繰り返す必要があるためです。もちろん複数の接続を使用することもできますが、これはサーバー側のリソースをより多く消費し、スケーラビリティに優れません。

HTTP2 プロトコルはすべてのリクエストに単一の接続を使用するため、レイテンシの影響は小さくなります。処理を待たずに複数のリクエストを送信できるため、処理がはるかに高速になります。

HTTP2 レイテンシテスト

HTTP/2 と HTTP1 におけるレイテンシの影響を示すため、無料の HTTP2 Golang テストサーバーを使用します。

HTTP2 プロトコルを使用する場合は、サーバーにすべてのリクエストを送信し、レスポンスを非同期に処理するだけで済みます。処理は非常に高速で、1 秒未満で完了します。

一方、HTTP1 プロトコルではリクエストを 1 件ずつ送信し、次のリクエストを送る前にサーバーからの応答を待つ必要があるため、処理が遅くなります。

以下のリンクから、Windows 向けにコンパイル済みの sgcWebSockets デモサンプルをダウンロードできます。さまざまなオプションをテストして、両プロトコル間のパフォーマンスを比較してください。