この記事では、Apacheのプレフォルク、ワーカー、イベントMPMを比較します。リクエスト処理戦略を分析し、並行性と要求の特性に基づいてパフォーマンスの違いを強調します。イベントMPMは通常、交通量が多いaに優れています
Apacheのマルチプロセスモジュール(MPM)は、着信要求をどのように処理するかを決定します。各MPMは、子どものプロセスを管理するための異なる戦略を採用しており、パフォーマンスとリソースの利用に影響を与えます。 3つの主要なMPMを分解しましょう:プレフォルト、ワーカー、イベント。
プレフォーク:このMPMは、リクエストが届く前に固定数の子プロセスを作成します。各子のプロセスは、一度に単一のリクエストを処理します。リクエストが入ったとき、Apacheはそれを利用可能な子プロセスに割り当てます。すべてのプロセスがビジーである場合、プロセスが無料になるまでリクエストはキューにキューになります。このモデルはシンプルで堅牢で、良好な安定性を提供しますが、事前にフォークされたプロセスの数によって制限されているため、交通量の多いサイトでは効率が低下する可能性があります。
ワーカー:ワーカーMPMはハイブリッドアプローチを使用します。親プロセスのプールを作成し、それぞれが多くの子プロセス(スレッド)を生成します。各子プロセスは、スレッドを使用して複数のリクエストを同時に処理できます。これにより、スレッドはプロセスよりも軽量であるため、フレーターよりも優れたリソース利用が可能になります。スレッドがブロックされている場合(たとえば、ネットワーク操作を待っています)、同じプロセス内の他のスレッドはリクエストの処理を継続して並行性を向上させることができます。
イベント:イベントMPMは、ワーカーモデルに基づいて構築され、イベント駆動型アーキテクチャを追加します。イベント(着信要求など)を処理し、ワーカースレッドに割り当てる単一のメインプロセスを使用します。このモデルは非常に効率的で、少数のスレッドが多数の同時リクエストを処理できるようにします。多くの短命のリクエストでシナリオに優れており、各リクエストのプロセスまたはスレッドの作成と管理のオーバーヘッドを最小限に抑えます。イベントMPMは非同期I/Oを使用して、パフォーマンスをさらに向上させます。
パフォーマンスの違いは、各MPMがリソースと並行性をどのように管理するかに起因します。
交通量の多いWebサイトの場合、イベントMPMは通常、最高のパフォーマンスを提供します。最小限のオーバーヘッドで多数の同時リクエストを処理する能力により、多くの短命の接続(Webサービング、API)を備えたシナリオに最適です。ワーカーMPMは、特にパフォーマンスと安定性のバランスが必要であり、リクエストの性質が純粋に短命ではない場合に、良い選択にもなります。
最適なMPMを選択することは、いくつかの要因に依存します。
要約すると、万能の答えはありません。慎重な監視とベンチマークから始めます。ワーカーMPMから多くのユースケースの良い出発点として始めて、重い負荷の下でパフォーマンスボトルネックが発生している場合は、イベントMPMを検討してください。 MPM構成を変更した後、常にサーバーのパフォーマンスを徹底的にテストおよび監視してください。プレフォルトは、通常、パフォーマンスが二次的な懸念である安定性批判的な状況、または他のMPMの使用を妨げるリソースの制限がある場合にのみ考慮する必要があります。
以上がApacheは、MPMS(プレフォルト、ワーカー、イベント)でリクエスト処理をどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。