Apache MPM Explained

Apacheウェブサーバーは、世界で最も人気のあるウェブサーバーです。 これは、そのモジュール設計によるところが大きいです。 Apache 2 はマルチプロセシングモジュール、または MPM を導入しました。 MPM はウェブサーバの基本的な機能を変更します。 MPM は Apache がどのようにネットワークをリッスンし、 リクエストを受け入れ、処理するかを変更することでこれを行ないます。 この機能の多くは、かなり技術的で、この記事の範囲外です。 この記事では、様々な MPM が何であり、どのように動作するかを簡単に説明します。 様々な MPM に関するより詳しい情報は、Apache ドキュメンテーションをご覧ください。

はじめに

すべてのバージョンの Apache 2.0 以降は何らかの形の MPM を実行しており、様々なオペレーティングシステム用の MPM が存在します。 この記事では Linux オペレーティングシステムで利用可能なものだけに焦点を当てます。 まず、現在使用している Apache のバージョンと MPM を確認します。

httpd -V | grep -i 'version\|mpm'

このコマンドを実行すると、次のような出力が得られます:

# httpd -V | grep -i 'version\|mpm'
Server version: Apache/2.4.16 (Unix)
Server MPM: event

この場合、サーバーは Apache 2.4 を実行し、イベント MPM を使用しています。 この出力は、サーバーが現在実行している Apache のバージョンと MPM によって異なる場合があります。

cPanel サーバーで MPM を変更するのは簡単です。 EasyApache スクリプトを実行して、利用可能なものから必要な MPM を選択するだけです。 Apache 2.0、Apache 2.2、Apache 2.4 のどれを実行しているかによって、表示されるリストが違ってきます。 Apache 2.4 より下のバージョンでは、Prefork と Worker だけが安定版とされています。 Event MPM は Apache 2.2 では実験的であると考えられ、Apache 2.4 以降でのみ使用されるべきです。

EasyApache を自分で実行するのが不安な場合は、Heroic Support® に連絡してください、喜んでお手伝いします。 つまり、それぞれの Apache 子プロセスは単一のスレッドを含み、一度に一つのリクエストを扱います。 そのため、スレッド化された MPM よりも多くのリソースを消費します。

Prefork はデフォルトの MPM ですので、EasyApache で MPM が選択されていない場合、Prefork が選択されます。 これは、Apache が mod_php (DSO) のようなスレッドセーフでないライブラリを使用しなければならない場合にも最良の選択で、プロセスの分離が重要な場合に理想的です。

Worker

Worker MPM は Apache をマルチプロセス、マルチスレッドのウェブサーバに変えます。 Prefork とは異なり、Worker の下の各子プロセスは複数のスレッドを持つことができます。 そのため、Worker は Prefork よりも少ないリソースでより多くのリクエストを処理することができます。 Worker は一般に、Apache 2.4 より前のバージョンを実行している高トラフィックサーバに推奨されます。 しかし、Worker はスレッドセーフでないライブラリとは互換性がありません。

Event

Event の下の各プロセスも複数のスレッドを含むことができますが、 Worker とは異なり、それぞれが複数のタスクを実行することが可能です。 Event MPM とともに使用される場合、Apache は最も低いリソース要件を持ちます。

ただし、Event は Apache 2.4 を実行しているサーバー上でのみサポートされます。 Apache 2.2 では、イベントは実験的であると考えられ、Apache の古いバージョンのいくつかのモジュールと互換性がありません。 とはいえ、Apache がメモリの問題を経験している高トラフィックの Apache 2.2 サーバーでは、イベント MPM を利用するために Apache をアップグレードすると、大きな結果が得られます。

他の MPM

他にも Threadpool や Perchild、Leader など多くの実験的 MPM が存在します。 Liquid Web では、これらの MPM を実行しないことを推奨しています。 これらは実験的なものなので、期待通りに動作する保証はありませんし、 私たちはこれらをサポートしたり、修正できることを保証できません。

マルチプロセスモジュールの Apache への追加は、 そのパワーと柔軟性を増加させました。 MPM はユーザがコアの挙動を変更することを可能にします。 これは、追加のソフトウェアをインストールすることなく、ユーザが Apache でできることを増やします。 もし、このこと、あるいは他のことに関して質問があれば、Heroic Support®に電話をかけてください。