ページの先頭です


ページ内移動用のリンクです

キャッシュエンジンの比較(1/3)

2012年6月12日

大規模なサイトでは、クライアントからのアクセスを効率よく受け付けるためにオリジナルのコンテンツを保持するオリジンサーバのほかに、何らかのリバースプロキシも運用してコンテンツの配信をしています。まず、ここではリバースプロキシとして利用できるプロダクトの中からコンテンツキャッシュの機能(キャッシュサーバ)について説明します。

キャッシュサーバの役割

キャッシュサーバに期待される役割

コンテンツを配信する上で、キャッシュサーバには以下のような役割が期待されています。

  1. コンテンツをキャッシュデータとして保持すること
  2. キャッシュデータを管理すること
  3. オリジンサーバへの問い合わせを減らすといった負荷分散をすること

大抵のキャッシュサーバでは、キャッシュしているコンテンツを有効期限(Time To Live : TTL)付きのキャッシュオブジェクトとして保持していますが、TTLを無視してキャッシュオブジェクトの更新をしたい、といった柔軟なコンテンツ管理を目指し、キャッシュ削除のための機能も備わっています。また、キャッシュ領域からあふれたキャッシュオブジェクトを管理するために、複数のアルゴリズムを選べるプロダクトもあります。

キャッシュサーバにキャッシュしていないコンテンツや、ライブ配信のようにTTLが短く設定されたコンテンツなどを配信する場合、キャッシュサーバからオリジンサーバへアクセスが抜けてしまうことがよくあります。この対策として、同一のリクエストをキャッシュサーバ側でまとめて、オリジンサーバへのアクセスを減らし (Request Consolidation)、自身が持っていないコンテンツを他のキャッシュサーバが保持していないか問い合わせるなどして、キャッシュサーバからオリジンサーバへのリクエストがなるべく抜けないことを目的とした機能を実装しているプロダクトもあります。

主なキャッシュエンジンについて

キャッシュサーバのプロダクトとして、Squidが古くから知られています。また、伝統的なWebサーバである、Apache HTTPサーバのmod_cacheなども有名です。しかし、最近はこれらのほかに、様々なキャッシュサーバとして使用できるプロダクトがリリースされています。

キャッシュサーバとして使用できる代表的なプロダクトとしては、下記のものが挙げられます。

  • Varnish Cache
  • Apache Traffic Server(ATS)
  • nginx
  • IIS Application Request Routing(ARR)

上記のうち、Varnish CacheとApache Traffic Server(ATS)は純粋にキャッシュサーバとしてリリースされており、nginxとIIS Application Request Routing(ARR)はいわゆるWebサーバとしての機能の他にモジュールなどを付け足すことで、高性能なキャッシュサーバとして使用できるようになります。なお、Varnish CacheとApache Traffic Serverは、Squidのようにキャッシュサーバとして作られたプロダクトです。

ここ最近、Varnish Cacheは、高性能であることからかなりの注目を集めています。ここで特筆すべき点は、設定ファイルの記述方法にあります。Varnish Cacheの設定ファイルはVCLというC言語によく似た言語で記述できるため、プログラミング経験者ならすんなりVCLの世界に入れるのではないかと思います。

Apache Traffic Server(ATS)は元々、Yahoo!(アメリカのほうです)で開発され、Yahoo!のサービスで使われていたという実績があります。現在は「apache」という名称から想像できるように、Apache Software Foundationに開発が移管されていますが、その後も活発な活動が継続されており、つい先日、3.2.0がリリースされました。

nginxは、WordPress.comなどで利用されているWebサーバです。特に、アクセスが多いYandexやRamblerなどのロシア圏のサイトで使用されています。最近の調査では、Webサーバとして用いるプロダクト群の中で存在感を増しています(とはいえ、Apache HTTPDにはまだまだ及びませんが)。nginxはApache HTTPDと同様にモジュールを使用することで、標準のWebサーバの機能を補完したり、新しく付け加えたりすることができます。また、標準で提供されているproxy moduleを使用することで、キャッシュサーバとして使えます。

Windows Serverで利用できるWebサーバプロダクトとしてはIISが有名ですが、このIISの拡張機能の中にApplication Request Routing (ARR)あります。プロダクトの名称からはアプリケーションゲートウェイであるかのような印象を持たれるかと思いますが、コンテンツキャッシュも可能です。パフォーマンス的にも、上記にあげたようなOSSのプロダクトにも劣らないため、既にWindows Serverを中心としたサーバ環境を運用されている場合は、利用を検討する候補の1つになると思います。

このように、一言にキャッシュサーバといっても、それぞれのプロダクトで実装方法や思想の違いなどで得手不得手があるため、実際に使用する場合は、サービスの性質に合わせて最適な組み合わせを選択することになります。

次回以降では、3つのキャッシュエンジン、Varnish Cache、Apache Traffic Server、nginxについて、IIJで行った比較実験の結果を紹介します。

渡辺 道和

執筆者プロフィール

渡辺 道和(わたなべ みちかず)

IIJ プロダクト本部 基盤プロダクト開発部 配信技術課
2011年に入社。IIJ大規模コンテンツ配信サービスの「中の人」として小さく吸って大きく吐く、をモットーに運用と開発に携わる。

関連リンク

  • 最新の技術動向 「Webサーバの性能を測る」
    UNIX系のOSで利用できるWebサーバの性能測定ツールといえば、Apache Benchやhttperfを思い浮かべる人が多いのではないでしょうか。これらの計測ツールは、残念ながら最近の高速なWebサーバを計測するには非力です。この記事では、高速なWebサーバにも負けないweighttpの使い方を紹介します。 (2012年12月18日)
  • IIJ Technical WEEK 2012 講演資料 「リバースプロキシプロダクトの比較」 [PDF:1.78MB]PDF
    大規模なWebサイトではリバースプロキシを使用し、コンテンツの配信効率の向上を目指しています。本講演では、IIJホームページに掲載した「最新の技術動向」の「キャッシュエンジンの比較」の連載で紹介しきれなかった細かい内容などをご紹介します。 (2012年11月16日)
  • 最新の技術動向 「キャッシュエンジンの比較(2/3)」
    前回は、キャッシュサーバに期待される役割と、キャッシュサーバやキャッシュエンジンについて説明をしました。ここでは、そのうちの3つのキャッシュエンジン、Varnish Cache、Apache Traffic Server、nginxについて、IIJで行った比較実験の結果を交えて更に詳しく説明します。 (2012年6月19日)
  • 最新の技術動向 「キャッシュエンジンの比較(3/3)」
    前回前々回は、キャッシュサーバに期待される役割と、キャッシュサーバやキャッシュエンジン、特にVarnish Cache、Apache Traffic Serverについて、IIJで行った比較実験の結果を交えて詳しく説明しました。最後に、nginxについて取り上げます。 (2012年6月26日)
  • 最新の技術動向 「高速WebサーバMighttpdのアーキテクチャ」
    IIJ-II技術研究所では、2009年の秋からMighttpdblank(mightyと読む)というWebサーバの開発を始め、オープンソースとして公開しています。この実装を通じて、マルチコアの性能を引き出しつつ、コードの簡潔性を保てるアーキテクチャにたどり着きました。ここでは、各アーキテクチャについて順を追って説明します。 (2012年5月29日)

ページの終わりです

ページの先頭へ戻る