俺の外部記憶

CentOS_Apache2_memo

最終更新:

external_storage

- view
管理者のみ編集可

オプション「--with-mpm」について

「--with-mpm」はApache HTTP サーバの MPM (Multi Processing Module) の機能を設定する。
MPMは、リクエストを処理する部分で以下の種類がある。
・prefork
・worker
・perchild
・winnt

prefork MPM

代表的な MPM らしい。
・Apache HTTP サーバ 1.3 系以前のモデル
・1 つのリクエストに対して、1 プロセスを割り当てる
・負荷に応じて、子プロセスを増減させる

※PHPで使うときは、prefork MPM を使う必要がある。
※PHPを使うとき、worker MPM を使うことは推奨されていない。

prefork MPM のデフォルト設定。
・StartServers 8
・MinSpareServers 5
・MaxSpareServers 20
・ServerLimit 256
・MaxClients 256
・MaxRequestsPerChild 4000

設定の説明。
・StartServers: 最初に起動する子プロセスの数
・MinSpareServers: 待機する子プロセスの最小数
・MaxSpareServers: 待機する子プロセスの最大数
・MaxClients: 生成する子プロセスの最大数
・MaxRequestsPerChild: それぞれの子プロセスが扱うリクエスト数の制限数

prefork MPM を使う場合、大量のアクセスを捌きたい場合には MaxClients の値を増やせばいいのですが、あまり増やしすぎてしまうとメモリ不足などになることが多いので、MaxClients を増やすときは ab(Apache Bench) コマンドなどを使って負荷テストを粉って、どのくらいまで設定できるのか見極める必要があります。


workder MPM

これも表的な MPM らしい。
・スレッド対応型
・リクエスト処理は、スレッドが対応する
・負荷に応じて、子プロセス数を増減させる
・1 子プロセスあたりのスレッド数は固定になっている

worker MPM のデフォルト設定。
・StartServers 2
・MaxClients 150
・MinSpareThreads 25
・MaxSpareThreads 75
・ThreadsPerChild 25
・MaxRequestsPerChild 0

設定の説明。
・StartServers: 最初に起動する子プロセスの数
・MinSpareThreads: アイドル状態のスレッド最小数
・MaxSpareThreads: アイドル状態のスレッド最大数
・MaxClients: 生成する子プロセスの最大数
・ThreadsPerChild: 子プロセスそれぞれに生成されるスレッド数
・MaxRequestsPerChild: それぞれの子プロセスが扱うリクエスト数の制限数

worker MPM は、リクエスト処理をスレッドが対応するというところがprefork MPM と違う。
スレッドを使ってるから prefork MPM よりパフォーマンスがいいらしい。


perchild MPM

・スレッド対応型
・リクエスト処理は、スレッドが対応する
・負荷に応じて、スレッド数を増減させる
・子プロセスの数は固定になっている

perchild MPM は、worker MPM の反対のような特徴をもっており、スレッド数だけが増減する仕組み。
そのため、子プロセスの生成を待つ必要がなく、スレッドも必要なだけになるため、もっともリソースを有効に使うことができる。
ただし、prechild MPM は不安定な面もあるという情報があるので、本番環境で使う前には入念なテストが必要。


winnt MPM

・スレッド対応型
・リクエスト処理は、スレッドが対応する
・Windows NT に特化したスレッドモデル

winnt MPM は、その名の通り Windows NT 向けに特化した MPM 。
WindowsのApacheは、winnt MPM がデフォルトで使わてるらしい。
記事メニュー
人気記事ランキング
目安箱バナー