Ngnx作品

nginxのは、Apacheは、nginxのは、少ないメモリ、高い安定性、強力な同時処理能力を取るなど、他のサーバープログラムに比べて、軽量なHTTPサービスプログラムです。一方、nginxのは、リバースプロキシサービスプログラムで、メールプロキシサービスプログラム。nginxのは、その上のモジュールの豊富なライブラリ、柔軟な構成、リソースの低消費電力とがあります。ここで、私たちは一緒にnginxのメカニズムでの綿密な外観を働きます

その高性能nginxの低消費電力を達成するための方法1.?

私たちは、次のような特徴を示しています。

ハンドリング機構のネットワークイベント
  • nginxのは、非同期非ブロックモードの処理要求は、要求が同時の千を処理することができます

  • nginxのセレクト/ epollを他の人気のイベント処理メカニズムをサポートし、システムが自動的に環境に応じて選択されます

  • nginxの独立したイベントシステムのハンドリング機構、効率的に要求を処理することができます

リソース割り当て手法
  • nginxのは、そのCPUとメモリの消費量が非常に低くなるようにリソース割り当て技術を、段階的

マルチコア処理の最適化
  • nginxのデフォルトのマルチプロセスの起動モード

  • nginxのプロセスとマスターワーカープロセスが含まれています

  • SMPは、対称型マルチプロセッシングをフル活用混雑ワーカー・プロセスのディスクI / Oのを減らすことができます

  • nginxのサポートワーカープロセスとプロセスのコンテキストを避けるために、1対1の対応を結合CPUコアが原因のキャッシュミスを切り替え
    て、最速のnginxのHTTPサーバにする、前述の技術と最適化されたnginxの多くの場所で。

2.Nginxプロセスモデル

アーキテクチャのnginxの技術は、プロセス・モデルは、重要な部分です。次に、我々は、nginxのプロセスモデル、並びにそれらの作業機を見てみましょう。

Linuxシステム、nginxのデフォルトはデーモンデーモンモード、デフォルトのマルチプロセスモードを開始します。nginxのは、2種類のプロセスが含まれています。

  • マスターコースでは、数は一つだけ、nginxの管理プロセス自体と労働者であります

  • CPUコアの数に等しいワーカープロセス、及び数は、一般的に、全てのnginxの要求処理は、ワーカーのプロセスで完了されています

ここでは、マスターとワーカープロセスでの綿密な外観です。

2.1マスター・プロセスのメカニズム

nginxの開始、マスター・プロセスの作成は、nginxのおよび関連するモジュール、受信及び処理作業外部信号のフォークワーカープロセスを初期化する責任がある場合。

nginxの初期化プロセス:

  • 最も重要なリンク初期化nginxのある設定ファイルを、構文解析

  • 各モジュールの設定を完了するためにコールバック関数を呼び出すための各構成命令、および相互接続されたような

  • 設立はソケット(listenfdを)聞きます

  • 準備が完了した後、フォークワーカー子プロセスとキャッシュサブプロセス
    マスター・プロセス信号処理メカニズムは、
    我々はどのようにマスター・プロセスの処理を確認するためにkillコマンドによってNignxマスター・プロセスに信号を送信します。




分析プロセス:

  • マスタープロセスがHUPシグナルを受け取ります

  • コンフィギュレーションファイルをリロードするマスター・プロセス

  • マスターワーカープロセスは新しいプロセスを開始します

  • マスタープロセスは、ワーカープロセスにシグナルを送ります

  • 古いワーカープロセスは、もは​​や新しい要求を受信しません

  • 古いワーカープロセスが終了する現在の要求で終了します

  • これまでのところ、nginxの完全なGR

注意:nginxのは、将来的には0.8バージョンでは、サービス管理nginxのを停止して再起動する-sパラメーター、ノートライン11を提供します。




2.2ワーカープロセス機構

ワーカープロセスは、すべての要求を処理するための責任がある、私たちはどのような労働者のワークフローを整理してHTTPリクエストを渡さ:

  • 新しい要求が入って来:すべてのワークプロセスが読めるlistenfdになります

  • 実際にミューテックスをつかむ:登録前のすべてのワーカー・プロセスは、イベント、最初のグラブaccept_mutexを読んlistenfd

  • グラブミューテックスの労働者は、イベントを読んlistenfd登録し、接続を受け入れるようにイベントに受け入れる呼び出し

  • GETリクエストの後、ワーカープロセスは、要求の読み取りを開始し、データを生成し、要求を処理し、要求を解析し、クライアントに返します

  • ワーカープロセスの切断

注意:HTTPリクエストが完全にワーカープロセスによって処理が、唯一の労働者との取引にされます

2.3マスタ・ワーカプロセスアーキテクチャのメカニズムは何アドバンテージ?

各ワーカー・プロセスのために、別のプロセスは、何のロック、ロック省資源のオーバーヘッドは生じない。ワーカー・プロセスの間に互いを妨害することなく、GRは良い例、中断されないサービスです。

ハンドリング機構2.4ネットワークイベント

nginxのは、その上の選択/世論調査/ファイルディスクリプタ/ kqueueのとのサポートで、非ブロッキング非同期イベント処理メカニズムを使用しています。nginxのは、同時にブロックされているそれらを呼び出し、複数のイベントを監視することができます。しかし、呼び出しはイベント準備、返品、またはバックファイルディスクリプタにがある場合は、タイムアウト時間内にタイムアウトがあります。書き込みがEAGAINを返した場合、イベントが再びのepollに配置されます。

一つだけの処理スレッド要求は同時に、ただ唯一の切り替え要求を維持するだけのいわゆる複数の要求を同時に処理することができます。スイッチが、しかしスイッチは、コンテキストスイッチ、非常に軽量な比較を必要としません。その他の同時実行が、それはより多くのメモリを占有します。

加えて、同様のプロセスに関連して、タイマ信号は、一人でこの部分を説明します。

含ま3. nginxのモジュール

nginxのは、nginxのは、より強力聞かせて、疎結合、モジュラーサービスアーキテクチャ、モジュールの豊富なセットです!私はnginxのモジュールが何であるかを見て

  • カーネルモジュールが
    他のモジュール/プロセスの動作環境を構築するために、基本的な通信プロトコルを実装して、コラボレーションインフラストラクチャ、オープンポートを聞いて、ワーカープロセスを開始します

  • HTTP /メールモジュール
    二つの特別なモジュール、機能モジュールとの間に位置するカーネルモジュールとカーネルモジュールの上部に抽象化の他の層を実装し、HTTP /メール・プロトコル・イベントを処理するには、正しい順序で機能モジュールを呼び出してください。

  • イベントモジュールがある
    読み、追加および削除イベントを書き込む、受け入れる聞いた後、接続を確立するための責任、非ブロックI / Oモデルと組み合わせて使用し、選択のためのサポート/ポール/ファイルディスクリプタ/ kqueueのなど、通訳が続くノートは雷が鳴っ群れ効果、。

  • ハンドラモジュールは、
    クライアントの要求を受信し、出力を生成するための責任、コンフィギュレーションコンテンツハンドラモジュール構成ファイルの場所ディレクティブ。

  • フィルタモジュールは
    、出力の内容を変更、コンテンツの出力を処理する責任を負う; Fiterモジュール応答メッセージを取得した後まで、ユーザに応答を送信し、処理動作を実行し、シーケンスはコンパイル時に決定される呼び出します。

  • 上流モジュール
    リバースプロキシの機能を達成するために、責任をバックエンドサーバーに要求を転送し、クライアントに応答を読み取り、完全なネットワークデータ受信を横切る単一の制限、処理及び転送。

  • ロードバランサモジュールは
    、構成アルゴリズムに応じて指定された、サーバーの転送を完了した要求で、バックエンドサーバーの様々な間で選択、アルゴリズムは、それ何ですか?

群れ効果を雷鳴:

    • カーネルが接続を受け入れると、それはすべてのを待っているのプロセスを起動します

    • しかし、一つだけのプロセスが接続を取得することができます実際には、他のプロセスが無効目覚めされています

    • だから、nginxのは、受け入れ呼び出し、同時に複数のプロセスを防止するためのロック機構を受け入れるの独自のセットを使用しています

    • nginxのロックマルチプロセスは、デフォルトでは一番下にCPUスピンロックによって達成されます。オペレーティングシステムは、ファイルのロックの使用上のスピンロックをサポートしていない場合。

おすすめ

転載: www.cnblogs.com/xingxia/p/nginx_work_principle.html