MPMの採用

 Apacheはモジュールによる機能拡張が行えることが特徴だったが、Apache2.xでは、サーバプロセスの中心部分までもが、「MPM」(Multi Processing Module)としてモジュール化された。MPMには、「プロセスベース・モデル」「スレッドベース・モデル」「ハイブレッド・モデル」の3種類がある。

 プロセスベース・モデルは、Apache1.3と同じ動作モデルで、あらかじめ複数のサーバプロセス「httpd」を立ち上げておくことで、複数のクライアントから同時アクセスに応えられるようにするものである。

 スレッドベース・プログラムは、サーバプロセスは1つで複数のスレッド(プロセス内の処理の単位)で複数のリクエストに対応するもの、ハイブレッド・モデルはその両方を組み合わせたものである。どのMPMを使用できるかはOSによって異なる。Linuxの場合はプロセスベース・モデルおよびハイブレッド・モデルが使用可能である。名前は、それぞれ「prefork」「worker」となる。

 どれを使用するかはコンパイル時にconfigureスクリプトのオプションで指定する必要がある。たとえば、Fedora Coreでは、それぞれのMPMを組み込んだApacheが別のプログラム名としてインストールされている。

/usr/sbin/httpd ←プロセスベース・モデル
/usr/sbin/httpd.worker ←ハイブリッド・モデル

 httpd.workerにはPHPなどいくつかのモジュールが動作しないといった不具合があるため、デフォルトではhttpdが使用される。

 Apache2.xではどのようなモジュールが静的モジュールとしてコンパイル時に組み込まれているかは、これらのプログラムを「-l」オプションを指定し実行してみると確認できる。

# httpd -l<E>
Compiled in modules:
    core.c
    prefork.c
    http_core.c
    mod_so.c
最終更新:2007年06月06日 16:38