マルチプロセス モデルを使用した nginx の利点
まず、各ワーカー プロセスについて独立しているため、プロセスをロックする必要がなく、ロックによるオーバーヘッドがなくなると同時に、プログラミング時や問題点の発見時に非常に便利になります。 (推奨学習: nginx use)
第二に、独立したプロセスを使用すると、相互に影響を与えないようにすることができます。1 つのプロセスが終了した後も、他のプロセスはまだ動作しており、サービスは中断されません。 . マスター プロセスはすぐに新しいワーカー プロセスを開始します。
もちろん、ワーカー プロセスが異常終了した場合は、プログラムにバグがあるはずです。異常終了すると、現在のワーカー上のすべてのリクエストが失敗しますが、すべてのリクエストに影響するわけではないため、リスクは次のとおりです。削減。
nginx マルチプロセス イベント モデル: 非同期ノンブロッキング
nginx はリクエストを処理するために複数のワーカーを使用しますが、各ワーカーは 1 つだけですワーカー メイン スレッドですが、nginx は非同期でノンブロッキングのメソッドを使用してリクエストを処理します。言い換えれば、nginx は同時に数千のリクエストを処理できます。
ワーカー プロセスが同時に処理できるリクエストの数はメモリ サイズによってのみ制限され、アーキテクチャ設計の観点からは、異なるワーカー プロセス間で同時リクエストを処理する際の同期ロックの制限はほとんどありません。ワーカー プロセスは通常、スリープ状態になりません。
したがって、Nginx 上のプロセスの数が CPU コアの数と等しい場合 (各ワーカー プロセスが特定の CPU コアにバインドされることが最適です)、プロセス間の切り替えコストは最小限になります。
Apache の一般的な動作方法 (Apache には非同期のノンブロッキング バージョンもありますが、独自のモジュールの一部と競合するため、一般的には使用されません) については、各プロセスは 1 つのみ処理します。一度にリクエストしてください。
したがって、同時実行数が数千に達すると、数千のプロセスが同時にリクエストを処理することになります。これはオペレーティング システムにとって大きな課題です。プロセスが占有するメモリは非常に大きく、プロセスのコンテキスト切り替えによる CPU オーバーヘッドも非常に大きくなります。当然、パフォーマンスは向上せず、これらのオーバーヘッドはまったく意味がありません。 . .
以上がnginx で複数のプロセスを使用する利点は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。