Apache2.2構築の記事一覧

マルチプロセッシングモジュール(MPM)の種類

Apacheのコア機能を提供するモジュールがマルチプロセッシングモジュール(MPM)です。コア機能とは、ネットワークポートをリスニングし、リクエストを受付、受け付けたリクエストを子プロセスやスレッドに割り当てるなど、Apacheが動作する上での基本的な機能のことです。

そのコア機能をOSの特性やサーバー環境に合わせて交換することができます。Apache2.2でMPMを交換するにはApacheの再ビルドが必要になりますが、最新の2.4では、Apache実行時に切り替えることもできるようになっています。

MPMの種類

MPMはプラットフォームごとに用意されています。例えば、Windows向けに最適化された「mpm_winnt」、OS/2用の「mpmt_os2」と言った具体です。

MPMは同一のプラットフォームにおいても、複数の種類が用意されています。UNIX系プラットフォームで選択可能なMPMは次の4タイプになります。

MPM 特徴
worker マルチプロセス、マルチスレッドに対応しており、各プロセスに対し決められた数のスレッドを用意する。
prefork(デフォルト) あらかじめhttpd子プロセスをいくつか生成してクライアントからの要求を処理する。
perchild マルチプロセス、マルチスレッドに対応し、かつプロセスそれぞれに個別のユーザーIDを割り当てることで可用性を高めることが可能。(Apache2.2で廃止)
event 大規模な用途向け。worker MPMのようなマルチスレッド処理に加え、Keep-Aliveリクエストの処理に、コネクションを処理するスレッドとは別のスレッドを割り当てることが可能。

Apacheはリクエスト単位でプロセスを使用する必要があり、同時に受け付けられるリクエスト数を増やすことで、それに比例してサーバーリソースも消費されます。しかし、workerやeventなどのマルチスレッド系MPMを使用すれば、スレッドでの動作が可能となります。スレッド動作はリソースあたりの処理能力がプロセス動作よりも高くなり、一般的に性能が向上し、かつ、サーバーリソースの消費も抑えられます。

ただ、最も安定して動作するのはデフォルトのpreforkと言えるでしょう。実際、event MPMはApache2.2では評価用という扱いであり、安定して動作しませんでした。特に理由がない場合、ビルド時に意図的に他を選択しなければ自動的に選択されるpreforkを選ぶのが無難とも言えます。preforkはマルチスレッドではなく、マルチプロセスのみで動作します。

2015年11月04日(水)|Apache2.2構築

Apacheの構造

ApacheはWebサーバーとして低コストで高いパフォーマンスを発揮するとともに、多くの機能を備えています。

Webサーバーに求められる機能は、HTML文書や画像などの情報を配信するといった基本的なものだけではありません。圧縮転送や、認証機能、プロキシサーバーやファイルサーバーなど、多く機能が求められています。

ただ、それらの機能を全て一度に使うケースは少ないでしょう。ある要件では必要な機能も、別の要件では不要であり、無駄になってしまいます。その無駄な部分を使わないのに、使える状態にしておくと、必然的に起動にかかるコストや必要なメモリーなどが増え、サーバーリソースを消費してしまいます。

特に、Webサーバーは不特定多数のクライアントからの要求に応える必要があり、そのためにより多くのプロセスやスレッドを立ち上げます。そのため、プログラムサイズが少しでも大きくなると、プロセスの多重起動により、消費するサーバリソースは肥大化してしまいます。

そこでApacheは、必要最低限な機能だけをコアに据え、残りは選択可能とするモジュール構造を採用しています。モジュールとは、ある機能を実現するためのソフトウェアで、プログラム本体に組み込んだり、交換することが可能な小さなプログラムのことです。

また、 プラットフォーム(環境やOSによる機能や実装の違い)に依存するコア機能の部分もモジュール化され、プラットフォームに応じて最適なものを選択することが可能となっています。

サーバーデーモンの実行部分(コア機能)を司るモジュールをMPM(マルチプロセッシングモジュール)と言います。MPMは各プラットフォームに最適化されているため、パフォーマンスを最大限に発揮することができます。

以降、2種類のモジュールを混合しないように、マルチプロセッシングモジュールを「MPM」、一般的な機能拡張モジュールを単に「モジュール」と記載します。

Apacheの構造

このようなモジュール構成となっているため、必要な機能を取捨選択して、適材適所なApacheを構成することが可能となります。

静的モジュールとDSOモジュール

Apacheの多くの機能はモジュールによって実現されます。モジュールはApacheの設定ファイルを編集することで、簡単に有効/無効を切り替えることができます。

モジュールをApacheに追加する方法として、Apacheをビルドするときに実行ファイルの中にモジュールを組み込んでしまう方法と、モジュールを単独ファイルとして作成し、Apacheの起動時に動的に追加する方法の2種類があります。前者を静的モジュール、後者をDSO(Dynamic Shared Object)モジュールと言います。

ビルド時にApache実行ファイルに組み込んだモジュールは、Apacheと密接な連携をとることができるため、起動時に動的に追加するモジュールよりも高速に動作します。ただし、一度組み込んだモジュールは再びビルドし直すまで外すことができません。

Apacheにロードされているモジュールの一覧は「httpd -M」コマンドで確認できます。

# httpd -M
Loaded Modules:
 core_module (static)
 mpm_prefork_module (static)
 http_module (static)
 so_module (static)

~ 省略 ~

 suexec_module (shared)
 disk_cache_module (shared)
 cgi_module (shared)
 version_module (shared)
 dnssd_module (shared)
 ssl_module (shared)
Syntax OK

静的に組み込まれている場合は「static」、DSOで動的に組み込まれている場合は「shared」と表示されます。

2015年11月04日(水)|Apache2.2構築

Apacheとは

Apacheとは最も人気の高いWebサーバーソフトウェアであり、大規模な商用サイトから自宅サーバーまで幅広く利用されています。単にApacheと称されることが多いですが、正式にはApache HTTP Serverと呼びます。

WebサーバーにおけるApacheのシェアは60%以上と言われており、LinuxやFreeBSDに代表されるUNIX系OSの他にWindowsやMac OSにも対応しており、幅広いプラットフォームで利用できます。

Apacheはフリーソフトウェアとして無償で公開され、商用利用も無償で行なえます。Apache Licenseの下でソースコードが公開および配布されており、一定の条件(Apacheライセンス)を満たせば、改変や再配布が可能です。そのため、Apacheから派生したソフトウェアは多数存在しています。(Oracleの「Oracle HTTP Server」やIBMの「IBM HTTP Server」もApache HTTP Serverをベースに各ベンダーがカスタマイズした製品です。)

Apacheの利用用途

ApacheはHTTPでコンテンツを配信するWebサーバー(HTTPサーバー)としてだけでなく、次のような用途にも活用できます。

用途 説明
HTTPSサーバー コンテンツの暗号化やサーバークライアント認証に対応したHTTPS(Hypertext Transfer Protocol over Secure Socket Layer)を利用し、データの盗聴やサーバーの詐称・なりすましを防ぐことができます。
ファイルサーバー WebDAV(Web-based Distributed Authoring and Versioninng)というプロトコルを使ってHTTPベースのファイル共有を行なえます。ユーザー認証と組み合わせることもできます。
Webアプリケーションサーバー クライアントの要求に応じた動的コンテンツを作成するようなWebアプリケーションの実行基盤として利用できます。PerlやRubyスクリプトなどで作成したCGIやPHPを実行することが可能です。
HTTPプロキシサーバー クライアントの代理応答を行なうフォワードプロキシや複数のサーバーを1台のプロキシサーバーで代理応答するような、リバースプロキシとしてApacheを利用できます。

Apacheの持つ機能は実に豊富で、実質有料となるMicrosoft IISなど、他の市販製品をも凌駕するほどです。それが無料で使えるので、これを使わない手はないわけです。

2015年11月03日(火)|Apache2.2構築

« 前へ 1 2

サイト内検索

カテゴリー

  • Apache2.2構築
  • BIND DNSサーバー構築
  • Linux基礎知識
  • NTPサーバー構築
  • vsftpd FTPサーバー構築

サイト情報

  • 当サイトについて
  • 免責
  • お問い合わせフォーム
  1. CentOSサーバー構築入門
  2. Apache2.2構築の記事一覧

CentOSサーバー構築入門

CentOSによるサーバー構築方法をわかりやすく解説しています。
  • 特定商取引法に基づく表示
  • 運営者情報
  • お問い合わせ
  • サイトマップ
  • twitter
  • facebook
  • Google +1
  • RSS
Copyright ©2025 CentOSサーバー構築入門 All Rights Reserved.

[↑]このページの先頭へ