nginx が高い同時実行性を実現できる理由
簡単に言えば、非同期,非同期です。 -ブロッキング 、epoll および 多くの基礎となるコード の最適化を使用します。
もう少し詳しく言うと、nginx の 特殊プロセス モデル と イベント モデル の設計です。
ビデオ コースの推奨事項 →: 「数千万のデータに対する同時実行ソリューション (理論と実践)」
プロセスモデル
nginx はマスタープロセスと複数のワーカープロセスを採用しています。
マスター プロセスは主にリクエストの収集と配布を担当します。リクエストが届くと、マスターはワーカー プロセスを開始してリクエストを処理します。
- #マスター プロセスは、高い信頼性を確保するためにワーカーのステータスを監視する責任もあります。
- ワーカー プロセスは通常、設定されています。 CPU コアの数を一貫して一致させます。 nginx のワーカー プロセスは Apache とは異なります。 Apche プロセスは同時に 1 つのリクエストしか処理できないため、多くのプロセス (数百、場合によっては数千) が開かれることになります。 nginx のワーカー プロセスが同時に処理できるリクエストの数はメモリによってのみ制限されるため、複数のリクエストを処理できます。
イベント モデル
nginx は非同期でノンブロッキングです。
リクエストが受信されるたびに、それを処理するワーカー プロセスが存在します。しかし、それがプロセス全体ではありません。リクエストを上流 (バックエンド) サーバーに転送し、リクエストが返されるのを待つなど、ブロックが発生する可能性があるプロセス。そうすれば、処理作業者は愚かに待つことはなく、リクエストを送信した後、「上流が戻ったら教えてください。続行します」というイベントを登録します。それで彼は休みました。この時点で、別のリクエストが来た場合は、この方法ですぐに対応できます。上流サーバーが戻ると、このイベントがトリガーされ、ワーカーが引き継ぎ、リクエストはダウンし続けます。
Web サーバーの動作特性により、各リクエストの処理時間のほとんどがネットワーク送信に費やされることが決まり、実際、サーバー マシンに費やされる時間はそれほど多くありません。これが、わずか数プロセスで高い同時実行性を解決する秘訣です。
Nginx 関連の技術記事の詳細については、Nginx チュートリアル 列にアクセスして学習してください。
以上がなぜ nginx は高い同時実行性を達成できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。