[Apache] MPM (Multi-Processing Modules) の予備知識

MPM (Multi-Processing Modules) は、マシンのネットワークポートをバインドしたり、 リクエストを受け付けたり、リクエストを扱うよう子プロセスに割り当てたり、 といった役割を持つ。

Prefork

  • 複数の子プロセスをローンチする
  • 子プロセスは1度に1個のコネクションを処理する
  • Apache2のデフォルトMPM
  • Workerに比べてメモリ使用量が多い
  • 常に最小限のプロセスが実行されているので、リクエストは待たずに処理される

Worker

  • Preforkのように子プロセスを複数生成する
  • 子プロセスは多くのスレッドを実行する
  • スレッドは1度に1個のコネクションを処理する
  • マルチプロセス・マルチスレッドサーバーを実現
  • Preforkに比べてメモリ使用量が少ない

Event

  • Apache 2.4から採用
  • Workerと酷似しているが高ロードの管理用に設計されている
  • より多くのリクエストを同時に処理することができる
  • 他のMPMが直面する‘keep alive problem’を解決しようとするもの
  • クライアントは最初のリクエスト終了後もコネクションをオープンしたまま維持し、続くリクエストを同じソケットを使って送出することができる
  • 結果としてコネクションのオーバーロードが軽減される

コンパイルされているモジュールを調べる

ロードされているモジュールを調べる

現在有効なMPMを調べる

MPMを変更する

参考サイト

What is Apache MPM ( Prefork, Worker and Event )
https://tecadmin.net/apache-mpm-prefork-and-worker-and-event/

マルチプロセッシングモジュール (MPM) – Apache HTTP サーバ バージョン 2.4
https://httpd.apache.org/docs/2.4/ja/mpm.html

prefork – Apache HTTP サーバ バージョン 2.4
https://httpd.apache.org/docs/2.4/ja/mod/prefork.html

worker – Apache HTTP サーバ バージョン 2.4
https://httpd.apache.org/docs/2.4/ja/mod/worker.html

event – Apache HTTP Server Version 2.4
https://httpd.apache.org/docs/2.4/ja/mod/event.html