ホームページ >運用・保守 >Nginx >なぜ nginx は高い同時実行性を達成できるのでしょうか?

なぜ nginx は高い同時実行性を達成できるのでしょうか?

步履不停
步履不停オリジナル
2019-06-20 16:00:226023ブラウズ

なぜ nginx は高い同時実行性を達成できるのでしょうか?

nginx が高い同時実行性を実現できる理由

簡単に言えば、非同期,非同期です。 -ブロッキング epoll および 多くの基礎となるコード の最適化を使用します。

もう少し詳しく言うと、nginx の 特殊プロセス モデルイベント モデル の設計です。

ビデオ コースの推奨事項 →: 「数千万のデータに対する同時実行ソリューション (理論と実践)」

プロセスモデル

nginx はマスタープロセスと複数のワーカープロセスを採用しています。

  1. マスター プロセスは主にリクエストの収集と配布を担当します。リクエストが届くと、マスターはワーカー プロセスを開始してリクエストを処理します。

  2. #マスター プロセスは、高い信頼性を確保するためにワーカーのステータスを監視する責任もあります。

  3. ワーカー プロセスは通常、設定されています。 CPU コアの数を一貫して一致させます。 nginx のワーカー プロセスは Apache とは異なります。 Apche プロセスは同時に 1 つのリクエストしか処理できないため、多くのプロセス (数百、場合によっては数千) が開かれることになります。 nginx のワーカー プロセスが同時に処理できるリクエストの数はメ​​モリによってのみ制限されるため、複数のリクエストを処理できます。

イベント モデル

nginx は非同期でノンブロッキングです。

リクエストが受信されるたびに、それを処理するワーカー プロセスが存在します。しかし、それがプロセス全体ではありません。リクエストを上流 (バックエンド) サーバーに転送し、リクエストが返されるのを待つなど、ブロックが発生する可能性があるプロセス。そうすれば、処理作業者は愚かに待つことはなく、リクエストを送信した後、「上流が戻ったら教えてください。続行します」というイベントを登録します。それで彼は休みました。この時点で、別のリクエストが来た場合は、この方法ですぐに対応できます。上流サーバーが戻ると、このイベントがトリガーされ、ワー​​カーが引き継ぎ、リクエストはダウンし続けます。

Web サーバーの動作特性により、各リクエストの処理時間のほとんどがネットワーク送信に費やされることが決まり、実際、サーバー マシンに費やされる時間はそれほど多くありません。これが、わずか数プロセスで高い同時実行性を解決する秘訣です。

Nginx 関連の技術記事の詳細については、Nginx チュートリアル 列にアクセスして学習してください。

以上がなぜ nginx は高い同時実行性を達成できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。