Apache と PHP の動作原理を紹介します。 同時に 1,000 人が php サイトをリクエストし、これらのリクエストが Apache サーバーに渡されるとします。このとき、Apache サーバーはどのように動作するでしょうか。 1. 1000 個のリクエストを処理するために 1000 個のプロセスを作成しますか? 2. 多数のプロセスを作成し、これらのプロセスには 1,000 件のリクエストを処理するための多くのスレッドが含まれていますか? 3. その他? cgi や php-fpm とは異なる fast-cgi もあります。上の例を使用して説明します。 詳しく読む:
上記の記事を通じて、fastcgiとphp-fpmの基礎知識を学ぶことができます。 いくつかの概念を見てみましょう。 1. CGI と FastCGI は、ISAPI、SAPI などと同様に、php スクリプトを処理するための Apache の 2 つの作業モードです。 2. php-fpm は動作モードではありませんが、FastCGI モードで実行される PHP のプロセス マネージャーです。正式名は PHP: FastCGI Process Manager です。 3. どのように動作するかは、環境をセットアップするときに PHP スクリプトの処理に使用する作業モードによって異なります。もちろん、Apache の構成 (接続数、プロセス数、スレッド数など) も不可欠です。使用されているオペレーティング システムです (オペレーティング システムが異なると、プロセスとスレッドのサポートが異なり、処理能力も異なります)。 まずシステム レベルについて説明します。次のように、システムごとにデフォルトで異なるマルチプロセッシング モジュール (MPM) が使用されます。
apachectl -l コマンドを使用して表示できます現在のシステム使用状況。MPM 構成。 主な違いは、システムが異なれば使用する構成も異なり、構成項目のサポート レベルも異なることです。 通常、次の構成項目が含まれます。 # StartServers: 開始するサーバープロセスの初期数 # MaxClients: 同時接続クライアントの最大数 # MinSpareThreads: スペアとして保持されるワーカー スレッドの最小数 # MaxSpareThreads: スペアとして保持されるワーカー スレッドの最大数 # ThreadsPerChild: 各サーバー プロセスのワーカー スレッドの数をカウントします。 # MaxRequestsPerChild: サーバー プロセスが処理するリクエストの最大数 等 次に、Apache レベルのこともあります。 上記の説明を見ると、最大接続数、各プロセスのスレッド数、各プロセスが処理するリクエストの数などをすべて設定できます。これらの一部をどのように処理するかは、構成値によって異なります。 次に、PHP 実行モードのレベルがあります。 現在の主流の動作モードは FastCGI です。もちろん、以前に構成されたサーバーの多くは他のモードを使用します。詳細は、コマンドを使用するか、Apache 構成ファイルを参照してください。以前にマークしたコンテンツの一部を投稿しましょう。 1. CGI (Common Gateway Interface) は通常、EXE ファイルなどの実行可能プログラムであり、WEB サーバーはそれぞれ異なるプロセスを占有し、一般に CGI プログラムは 1 つのユーザー要求しか処理できません。このように、ユーザー リクエストの数が非常に多い場合、メモリや CPU 時間などのシステム リソースが大量に占有され、パフォーマンスが低下します。 2. ISAPI (Internet Server Application Program Interface) は、Microsoft が提供する WEB サービス用の API インターフェイスのセットであり、CGI が提供するすべての機能を実現し、フィルター アプリケーション プログラム インターフェイスを提供するなど、これをベースに拡張できます。 ISAPI アプリケーションは、ほとんどの場合、ユーザーの要求後に実行できる DLL 動的ライブラリの形式で使用されます。これらは、ユーザーの要求を処理した後すぐには消えませんが、メモリ内に常駐し続け、他のユーザーの入力を待ちます。処理される。また、ISAPI DLLアプリケーションとWEBサーバーが同一プロセスにあるため、CGIに比べて大幅に効率が高くなります。 3. FastCGI は、スケーラブルなアーキテクチャを備えた CGI のオープンな拡張機能であり、その主な動作は CGI インタプリタ プロセスをメモリ内に保持することで、より高いパフォーマンスを実現します。従来の CGI インタープリターの繰り返しロードが CGI パフォーマンス低下の主な原因です。CGI インタープリターがメモリ内に残り、FastCGI プロセス マネージャーのスケジューリングを受け入れる場合、良好なパフォーマンス、スケーラビリティなどが提供されます。 PHP を ISAPI モードで実行する場合の最大の欠点は、PHP に問題が発生すると、Apache プロセスも停止してしまうことです。 FastCGI モードで PHP を実行する利点: 1 つ目は、PHP に問題が発生した場合、Apache はダウンしませんが、PHP 自体のプロセスがクラッシュします (ただし、FastCGI は、クラッシュしたプロセスを置き換えるために新しい PHP プロセスをすぐに再起動します)。 次に、PHP を実行する場合、FastCGI モードは ISAPI モードよりもパフォーマンスが優れています。 最後に、PHP5 と PHP4 を同時に実行できるようになりました。 包括的なシステム レベル、Apache 構成レベル、および PHP 動作モード レベルでは、1,000 のリクエストに 1,000 のプロセスは必要ありません。処理できるプロセスは 2 桁か、さらに少ない可能性があります。 |