このページの本文へ

アプリケーショントラフィック管理入門 第4回

SSLアクセラレータやHTTPの最適化、セキュリティなど

サーバーの処理を肩代わりする「オフロード」とは?

2010年04月05日 06時00分更新

文● 大谷イビサ/TECH.ASCII.jp

  • この記事をはてなブックマークに追加
  • 本文印刷

HTTPの最適化

 Webの送受信に用いられているHTTPは、インターネットの代表的なプロトコルといえる。しかし、低速な通信環境を前提に作られたため、時代にそぐわない部分も出てきた。こうした点を改良するのが、HTTPの最適化である。

 HTTPは取得したいHTMLや画像ファイルなどのリソース(URL)を、リクエストとして送り、サーバー側がそれにレスポンス(応答する)というシンプルなプロトコルだ。このリクエストとレスポンスの組み合わせることで、1つのHTTPコネクションが確立する。

 コネクションは、1つのリソースごとに構築されるので、3つのファイルから構成されているWebページでは、3つのコネクションが必要になる。ところが、HTTPの通信に先立っては、負荷のかかるTCPのコネクション確立を行なう必要がある。そのため、Webぺージ表示に何度もTCPコネクションを確立するのは、サーバーに大きな負荷をかけてしまうことになる(図3)

図3 TCPとHTTPでのオーバーヘッド

 こうしたHTTPを最適化する手法としては、「持続接続」と「パイプライン化」という機能がある。持続接続では、1回のコネクションを複数のリソース取得に使い回す機能で、HTTP1.0でオプションとして提供されていた「Keep-Alive」を標準搭載したものだ。一方、パイプライン化は、サーバーからの応答を待たずに複数のリソース取得を連続的に行なう方法だ。両者ともHTTP1.1で実装され、幅広く利用されている。

 また、昨今では複数台のクライアントのコネクションを束ねて1本にする機能もある。これを用いると、多数のHTTPコネクションを統合型トラフィック管理装置が少数のコネクションに集約し、それらを再利用しながら、データの送受信を行なえる(図4)。サーバーの負荷は大きく軽減され、Webページの読み込み速度を上げることが可能になる。

図4 複数クライアントでのTCPコネクションの集約化

 HTTP1.1では圧縮もサポートされている。圧縮にはGZIPやDeflateといったアルゴリズムが用いられ、WebブラウザではIE4/Netscape 4以降で利用できる。また、WebサーバーではApache 1.3以降で別途モジュールを組み込むと利用でき、IISでは5以降がサポートしている。HTTP圧縮は実際に利用すると劇的な効果があるのだが、サーバー側で利用していないケースが多いようだ。また、圧縮にはCPU負荷がかかるので、すべてのコンテンツを圧縮するのは効果的とはいえない。こうした処理もロードバランサーにオフロードするのがお勧めだ。

(次ページ、セキュリティを確保する)


 

カテゴリートップへ

この連載の記事