ApacheのMPMの概要とチューニング方法についてです。
※目次をクリックすると目次の下部にコンテンツが表示されます。
Prefork MPM
1)Prefork MPMの概要
・prefork MPMは、複数の子プロセスがそれぞれ一つのスレッドとして実行され、それぞれの子プロセスが一つの接続を扱う。
2)設定パラメータ
・StartServers
開始時の子プロセスの数
・MinSpareServers、MaxSpareServers
プール内に維持するスペアのプロセスの最小、最大の数
・ServerLimit
設定可能なサーバプロセス数の上限
・MaxClients
応答することのできる同時リクエスト数。Prefork MPMの場合は、同時に実行できる子プロセスの数
・MaxRequestsPerChild
子プロセスが扱うことのできるリクエストの制限数
3)チューニング上の注意点
・ServerLimitとMaxClients
preforkの場合は同時クライアント数 = サーバプロセス数なので、ServerLimitの設定値は、MaxClientsに設定可能な上限値を設定することになる。
ServerLimit が必要以上に大きな値に設定された場合は、余計な未使用共有メモリが割り当てられてしまう。
・MaxRequestsPerChild
無制限に設定する事も出来るが、適切な高い値を設定するとメモリリークの蓄積をある一定のタイミングで解消するが出来る。
4)処理フローの概要
①親プロセスがリクエスト受信
②親プロセスは子プロセスにリクエストの割当てを試みる。親プロセスと子プロセスは共有プロセスを介してやり取りする。
③プール内にスペアの子プロセスがある場合は、その子プロセスがリクエストを処理する。
④MaxClientsの上限に達していなく、スペアの子プロセスが存在しない場合は、新しい子プロセスが生成され、その子プロセスがリクエストを処理する。
⑤MaxClientsの上限まで子プロセスが実行中の場合は、子プロセスが利用可能になるまでキューで待機する。
⑥リクエスト処理後、MaxRequestsPerChildの上限に達した場合、または、すでにMaxSpareServersの数だけスペアプロセスだけ存在している場合は、その子プロセスは削除される。
・prefork MPMは、複数の子プロセスがそれぞれ一つのスレッドとして実行され、それぞれの子プロセスが一つの接続を扱う。
2)設定パラメータ
・StartServers
開始時の子プロセスの数
・MinSpareServers、MaxSpareServers
プール内に維持するスペアのプロセスの最小、最大の数
・ServerLimit
設定可能なサーバプロセス数の上限
・MaxClients
応答することのできる同時リクエスト数。Prefork MPMの場合は、同時に実行できる子プロセスの数
・MaxRequestsPerChild
子プロセスが扱うことのできるリクエストの制限数
3)チューニング上の注意点
・ServerLimitとMaxClients
preforkの場合は同時クライアント数 = サーバプロセス数なので、ServerLimitの設定値は、MaxClientsに設定可能な上限値を設定することになる。
ServerLimit が必要以上に大きな値に設定された場合は、余計な未使用共有メモリが割り当てられてしまう。
・MaxRequestsPerChild
無制限に設定する事も出来るが、適切な高い値を設定するとメモリリークの蓄積をある一定のタイミングで解消するが出来る。
4)処理フローの概要
①親プロセスがリクエスト受信
②親プロセスは子プロセスにリクエストの割当てを試みる。親プロセスと子プロセスは共有プロセスを介してやり取りする。
③プール内にスペアの子プロセスがある場合は、その子プロセスがリクエストを処理する。
④MaxClientsの上限に達していなく、スペアの子プロセスが存在しない場合は、新しい子プロセスが生成され、その子プロセスがリクエストを処理する。
⑤MaxClientsの上限まで子プロセスが実行中の場合は、子プロセスが利用可能になるまでキューで待機する。
⑥リクエスト処理後、MaxRequestsPerChildの上限に達した場合、または、すでにMaxSpareServersの数だけスペアプロセスだけ存在している場合は、その子プロセスは削除される。
Worker MPM
1)Worker MPMの概要
・worker MPMは、各子プロセスが複数のスレッドを実行し、各スレッドが一つのリクエストを処理する、マルチスレッドモデルを使用する。
・マルチプロセッサーマシンに最適で、メモリ使用量が少なく、prefork MPMよりスケーラビリティに優れる。
・非常に大きなスケーラビリティを必要とするサイトでは、workerなどのスレッド化されたMPMを利用できる一方で、安定性や古いソフトウェアとの互換性を必要とするサイトではpreforkが利用できる。
2)設定パラメータ
・StartServers
開始時の子プロセスの数
・ThreadsPerChild
各子プロセスで生成されるスレッド数。子プロセスは開始時にこれらのスレッドを生成して、その後は生成しない。
・MinSpareThreads、MaxSpareThreads
プール内に維持するスペアのスレッドの最小、最大の数
・ServerLimit
設定可能なサーバプロセス数の上限
・MaxClients
応答することのできる同時リクエスト数。
・MaxRequestsPerChild
子プロセスが扱うことのできるリクエストの制限数
・worker MPMは、各子プロセスが複数のスレッドを実行し、各スレッドが一つのリクエストを処理する、マルチスレッドモデルを使用する。
・マルチプロセッサーマシンに最適で、メモリ使用量が少なく、prefork MPMよりスケーラビリティに優れる。
・非常に大きなスケーラビリティを必要とするサイトでは、workerなどのスレッド化されたMPMを利用できる一方で、安定性や古いソフトウェアとの互換性を必要とするサイトではpreforkが利用できる。
2)設定パラメータ
・StartServers
開始時の子プロセスの数
・ThreadsPerChild
各子プロセスで生成されるスレッド数。子プロセスは開始時にこれらのスレッドを生成して、その後は生成しない。
・MinSpareThreads、MaxSpareThreads
プール内に維持するスペアのスレッドの最小、最大の数
・ServerLimit
設定可能なサーバプロセス数の上限
・MaxClients
応答することのできる同時リクエスト数。
・MaxRequestsPerChild
子プロセスが扱うことのできるリクエストの制限数
-
インストール、設定全般、運用
- Apacheのインストール
- Apache初期設定確認
- Apacheの静的、DSOモジュールの確認、インストール方法
- Apacheでconf.dディレクトリ内の設定ファイルのインクルードに注意
- Apacheのhttpdサービスの使用方法
- WordPressパーマリンク設定時のApache設定
- Apache mod_rewriteの仕組み、設定方法、動作確認
- Apacheで特定の拡張子を含むリクエストをログ対象から外す
- CentOS Stream9でApache、PHPを設定する際の注意点
- ApacheのTraceメソッドを無効にする
- ヘッダーにApacheバージョンが表示されないようにする
- PHPのバージョン情報とApacheの設定
- Apacheでディレクトリ内一覧表示を無効にする
- Apacheで不要なモジュールはロードしない
- Apacheで不要なモジュールはロードしない(1)ベーシック認証と認証プロバイダ
- Apacheで不要なモジュールはロードしない(2)ダイジェスト認証
- Apacheで不要なモジュールはロードしない(3)mod_rewrite、LDAP、WebDAV
- Apacheで不要なモジュールはロードしない(4)Server Side Includes
- Apacheで不要なモジュールはロードしない(5)mod_mime_magic
- Apacheで不要なモジュールはロードしない(6)mod_info、mod_status
- Apacheで不要なモジュールはロードしない(7)mod_speling、mod_userdir
- Apacheで不要なモジュールはロードしない(8)プロキシ関連のモジュール
- Apacheで不要なモジュールはロードしない(9)キャッシュ関連のモジュール
- Apacheで不要なモジュールはロードしない(10)CGI関連のモジュール
- Apacheで不要なモジュールはロードしない(11)フィルター、expires、圧縮のモジュール
- Apacheでディレクトリへのアクセスを制限する設定方法
- Apacheベーシック認証の設定手順とセキュリティ上の注意
- Apacheで使用できるHTTPメソッドを制限する
- FIPS140-2とApacheのmod_nss
- Apacheにおける自己証明書作成手順
- ApacheにおけるSSL証明書インストール手順
- DoS攻撃からWebサーバーを保護するApacheモジュール
- Apacheに関するLinux側のセキュリティ設定(パーミッション、iptables、chroot)
- Modsecurityの概要と特徴
- Modsecurityのインストール方法
- modsecurityの設定方法と設定例
- Apacheのパフォーマンスに影響を与えるOS、ハードウェアの要素、注意点
- ApacheのMPMの概要とチューニング
- ApacheのMaxClientsのチューニングとListenBacklog
- HostnameLookupsを有効にして名前解決を行う場合のApacheパフォーマンスに与える影響
- FollowSymLinks、SymLinksIfOwnerMatchの設定とApacheのパフォーマンス
- AllowOverrideの設定とApacheのパフォーマンス
- コンテントネゴシエーションの設定とApacheのパフォーマンス
- Apacheのプロセス生成とパフォーマンスに与える影響
セキュリティ
パフォーマンス