apache構成最適化ワークモード

4312 ワード

定義#テイギ#
ハイブリッドマルチスレッドマルチプロセスをサポートするマルチプロセスモジュール.
複数のサブプロセスを使用して、各サブプロセスに複数のスレッドがあります.各スレッドは、特定の時間に1つの接続しか維持できません.通常、高トラフィックのHTTPサーバでは、worker MPMのメモリ使用がPrefork MPMよりはるかに低いため、worker MPMは比較的良い選択です.しかし、ワークMPMには、1つのスレッドがクラッシュすると、プロセス全体がその任意のスレッドとともに「ハングアップ」し、スレッドは共有メモリ空間であるため、1つのプログラムは実行時にシステムによって「各スレッドは安全である」と認識されなければならないという欠点もある.
Workerの動作原理と構成workerは、2.0版でマルチスレッドとマルチプロセスの混合モデルをサポートするMPMです.スレッドを使用して処理するため、比較的大量の要求を処理することができ、システムリソースのオーバーヘッドはプロセスベースのサーバよりも小さい.しかし、workerはマルチプロセスも使用し、各プロセスはまた複数のスレッドを生成し、プロセスサーバベースの安定性を得る.
デフォルトのworker構成セグメントは次のとおりです.
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0

Workerの動作原理:マスター制御プロセスによって「StartServer」サブプロセスが生成され、各サブプロセスには一定のThreadsPerChildスレッド数が含まれ、各スレッドは独立して要求を処理する.同様に、要求が来たときにスレッドを再生成しないように、MinSpareThreadsとMaxSpareThreadsは、最小および最大の空きスレッド数を設定します.一方、MaxClientsは、すべてのサブプロセスのスレッドの合計数を設定します.既存のサブプロセスのスレッドの合計数が負荷を満たすことができない場合、制御プロセスは新しいサブプロセスを派生します.
Worker conf指令分析:StartServers#サーバ起動時に確立されたサブプロセス数MaxClients#同時サーボ可能な最大アクセス要求数(最大スレッド数).MaxClientsの制限を超えるリクエストは、待機キューに入ります.デフォルト値は「400」、16(ServerLimit)に25(ThreadsPerChild)を乗じた結果です.したがって、MaxClientsを増やす場合は、Server Limitの値MaxSpareThreads#を同時に増やして最大アイドルスレッド数を設定する必要があります.デフォルトは「250」です.このMPMは、サーバ全体に基づいて空きスレッド数を監視する.サーバ内の空きスレッドの合計数が多すぎる場合、サブプロセスは余分な空きスレッドを殺します.ThreadsPerChild#サブプロセスごとに確立される常駐実行スレッドの数.既定値は25です.サブプロセスは、起動時にこれらのスレッドを確立した後、新しいスレッドを確立しません.MaxRequestsPerChild#は、各サブプロセスが生存期間中にサーボを許可する最大要求数を設定します.MaxRequestsPerChildの制限に達すると、サブプロセスは終了します.MaxRequestsPerChildが「0」の場合、サブプロセスは終了しません.MaxRequestsPerChildをゼロ以外の値に設定するメリットは、(1)メモリの漏洩を無限に防止し、メモリを消費することです.(2)プロセスに限られた寿命を与え、サーバ負荷が軽減されたときにアクティブプロセスの数を減らすのに役立つ.
Server Limit命令の解釈
preforkMPMの場合、この命令はMaxClientsの最大許容構成の数値を設定します.workerMPMの場合、この命令はThreadLimitと組み合わせてMaxClientsの最大許容構成を設定した数値を使用します.
preforkMPMの場合、このコマンドは、MaxClientsをデフォルト値256よりも高く設定する必要がある場合にのみ使用する必要があります.このコマンドの値をMaxClientsと同じにします.workerMPMの場合、このコマンドを使用する必要があるのは、MaxClientsとThreadsPerChildをデフォルト値16を超えるサブプロセスに設定する必要がある場合だけです.この命令の値は、MaxClientsおよびThreadsPerChildが必要とするサブプロセスの数よりも高く設定しないでください.ServerLimitが明示的に宣言されている場合、ThreadsPerChildに乗算される値はMaxClients以上でなければなりません.また、MaxClientsはThreadsPerChildの整数倍でなければなりません.それ以外の場合、Apacheは対応する値に自動的に調整されます(望ましくない値の可能性があります).注意:Apacheはコンパイル時に内部に「ServerLimit 20000」というハードリミットがあります(preforkMPMでは「ServerLimit 200000」です).この制限を超えてはいけない.
Maxclient命令解釈
非スレッド型のMPM(prefork)の場合、Max Clientsはサーボクライアント要求に使用できる最大サブプロセス数を表し、デフォルトは256です.この値を大きくするには、Server Limitを同時に大きくする必要があります.
スレッド型またはハイブリッド型のMPM(すなわちbeosまたはworker)について、MaxClientsはサーボクライアント要求に使用できる最大スレッド数を表す.スレッド型beosのデフォルト値は50です.混合型のMPMのデフォルト値は、16(ServerLimit)に25(ThreadsPerChild)を乗じた結果です.したがって、MaxClientsを16以上のプロセスに追加して提供する場合は、Server Limitの値を同時に追加する必要があります.
Apacheはモジュール化された設計に基づいているが、Apache 2.0はモジュール化されたWebサーバへの設計の最も基本的な機能を拡張している.サーバには、ローカルネットワークポートをバインドし、要求を受け入れ、サブプロセスをスケジューリングして要求をユーザーレベルで処理するマルチプロセスモジュールが搭載されており、MPMは他のApacheモジュールと非常に似ているように見えます.主な違いは、任意の時点でMPMをサーバにマウントしてMPMを指定する方法が1つしかないことです:#./configure --help|grep mpm --with-mpm=MPM Choose the process model for Apache to use. MPM={beos|event|worker|prefork|mpmt_os2| perchild|leader|threadpool}
apache構成インストールパラメータ./configure --prefix=/usr/local/apache2 --enable-rewrite --enable-so --enable-headers --enable-expires --with-mpm=worker --enable-modules=most --enable-deflate
--prefix=/usr/local/apache 2#は、apacheのインストールパスを指定します.デフォルトのインストールパスは/usr/local/apache 2です.
--enable-rewrite#URLルールの書き換えを提供
--enable-so#apacheサービスをアクティブにするDSO(Dynamic Shared Objects動的共有ターゲット)は、後でDSO方式でインストール共有モジュールをコンパイルすることができ、このモジュール自体はDSO方式でコンパイルできない.
--enable-headers#は、HTTPリクエストヘッダを許可する制御を提供します.
--enable-expires#は、プロファイルによってHTTPを制御する「Expires:」と「Cache-Control:」のヘッダコンテンツ、すなわちWebサイトのピクチャ、js、cssなどのコンテンツをアクティブにし、クライアントブラウザキャッシュの設定を提供します.これはapacheチューニングの重要なオプションの一つです.
--with-mpm=worker#apache mpmのモードをworkerモードとして選択します.workerモードの原理は、要求を処理するためにスレッドをより多く使用するため、より多くの同時要求を処理することができる.一方、システムリソースのオーバーヘッドは小さく、プロセスベースのMPM preforkを選択することができる.このパラメータを指定しない場合、デフォルトのモードはpreforkプロセスモードです.イベントモードを指定することもできる.これはapacheチューニングの重要なオプションの一つです.
--enable-deflate#は、html、js、cssなどのコンテンツのサイトが一般的なコンテンツの圧縮転送符号化サポートを提供します.このパラメータを使用すると、送信速度が向上し、訪問者のアクセス体験が向上します.本番環境ではapacheチューニングの重要なオプションの1つです
この記事は以下のとおりです.http://httpd.apache.org/docs/2.4/mod/worker.html