ページの先頭です


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

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

2012年6月26日

前回前々回は、キャッシュサーバに期待される役割と、キャッシュサーバやキャッシュエンジン、特にVarnish Cache、Apache Traffic Serverについて、IIJで行った比較実験の結果を交えて詳しく説明しました。最後に、nginxについて取り上げます。

nginx

nginxは、既に紹介している機能のほかに、下記のような特徴を持っています。

  • 非同期のイベント駆動による高速な処理能力
  • サービスを止めずにバイナリをアップデートできる
  • 豊富な3rdパーティ製モジュール

nginxは、既に紹介している他のキャッシュエンジンと同様に、接続を非同期のイベント駆動の仕組みで処理しますが、処理能力はその中でも高く、多くの接続が集中するサイトを運営するにあたり、大きなアドバンテージを持つと言えます。

また、nginxの主なプロセスである、実際に接続を処理するworkerプロセスとそれを管理するmasterプロセスは、様々なプロセスシグナルを受け付けるように実装されています。この例として、オンザフライのバイナリアップデートが挙げられます。設定ファイルの再読み込みでプロセスの再起動が不要なプロダクトは世の中に多く見られますが、バイナリのアップデート時にはプロセスの再起動が不要なプロダクトは筆者が見渡した限り、nginxだけです。nginxのオンザフライのバイナリアップデートは以下のように機能します。

  1. 古いバイナリを新しいバイナリに置き換えた後、オンザフライでアップデートするためのシグナル(USR2)をmasterプロセスに送出する
  2. 新しいバイナリが起動する(この時点では、新旧のプロセスで接続を受け付けている状態)
  3. 古いバイナリで起動しているmasterプロセスに、新規接続を停止するためのシグナル(WINCH)を送出する
  4. 古いバイナリのmasterプロセスによって管理されているworkerプロセスは、自身が担当している接続が完了した時点で終了する
  5. すべてのworkerプロセスが終了した後、古いバイナリで起動しているmasterプロセスに安全に終了するようにシグナル(QUIT)を送出する
  6. 古いバイナリで起動したすべてのプロセスが終了し、新しいバイナリで起動したプロセスのみになる

nginxのオンザフライによるアップデート

このように処理を継続したままバイナリを入れ替えられるので、例えば、運用時にセキュリティフィックスが出た場合のアップデートなどに、柔軟に実施できるという利点があります。更に、nginxは、既存の機能のほかに3rdパーティ製のモジュールが充実しているため、必要に応じた機能拡充がしやすいという利点があります。また、前述のオンザフライアップグレードを利用することで、追加したモジュールを気軽に投入できます。

前回の比較表では、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日)
  • 最新の技術動向 「キャッシュエンジンの比較(1/3)」
    大規模なサイトでは、クライアントからのアクセスを効率よく受け付けるためにオリジナルのコンテンツを保持するオリジンサーバのほかに、何らかのリバースプロキシも運用してコンテンツの配信をしています。まず、ここではリバースプロキシとして利用できるプロダクトの中からコンテンツキャッシュの機能(キャッシュサーバ)について説明します。 (2012年6月12日)
  • 最新の技術動向 「キャッシュエンジンの比較(2/3)」
    前回は、キャッシュサーバに期待される役割と、キャッシュサーバやキャッシュエンジンについて説明をしました。ここでは、そのうちの3つのキャッシュエンジン、Varnish Cache、Apache Traffic Server、nginxについて、IIJで行った比較実験の結果を交えて更に詳しく説明します。 (2012年6月19日)
  • 最新の技術動向 「高速WebサーバMighttpdのアーキテクチャ」
    IIJ-II技術研究所では、2009年の秋からMighttpdblank(mightyと読む)というWebサーバの開発を始め、オープンソースとして公開しています。この実装を通じて、マルチコアの性能を引き出しつつ、コードの簡潔性を保てるアーキテクチャにたどり着きました。ここでは、各アーキテクチャについて順を追って説明します。 (2012年5月29日)

ページの終わりです

ページの先頭へ戻る