Nginx は、多数の同時リクエストを同時に処理できる高性能 Web サーバーです。マルチプロセス機構と非同期機構を組み合わせたもので、非同期機構は非同期ノンブロッキング方式を採用しています。
(推奨チュートリアル: nginx チュートリアル)
以下は、Nginx のマルチスレッド メカニズムと非同期ノンブロッキング メカニズムの概要です。
1. マルチプロセスのメカニズム
サーバーがクライアントを受信するたびに、子プロセス (ワーカー プロセス) を生成するサーバー マスター プロセス (マスター プロセス) が存在します。接続が切断され、サブプロセスが終了するまで、対話のためにクライアントとの接続を確立します。
プロセスを使用する利点は、各プロセスが互いに独立しており、ロックを必要としないことです。これにより、ロックの使用によるパフォーマンスへの影響が軽減され、プログラミングの複雑さと開発コストが削減されます。
第 2 に、独立したプロセスを使用すると、プロセスが相互に影響するのを防ぐことができます。1 つのプロセスが異常終了しても、他のプロセスは正常に動作し、マスター プロセスはサービスが中断されないように新しいワーカー プロセスをすぐに開始します。 . が中断され、リスクが最小限に抑えられます。
欠点:
オペレーティング システムは、メモリのコピーやその他の操作を必要とする子プロセスを生成するため、リソースと時間の面で一定のオーバーヘッドが発生します。リクエストが大量に発生すると、システムのパフォーマンスが低下します。
2. 非同期ノンブロッキング メカニズム
各ワーカー プロセスは非同期ノンブロッキング モードを使用し、複数のクライアント リクエストを処理できます。
作業プロセスは、クライアントからリクエストを受信すると、IO を呼び出して処理します。結果がすぐに得られない場合は、他のリクエストを処理します (つまり、ノンブロッキング)。クライアントはリクエストを処理しません。この期間中待機する必要があるため、それに応じて他の処理 (つまり、非同期) を処理できます。
IO が返されると、このワーカー プロセスに通知が送信され、プロセスはクライアントの要求に応答するために現在処理されているトランザクションを一時的に中断します。
以上がNginx が HTTP リクエストを処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。