nginxののキーコンセプトの接続

何コネクションいますか?
  TCP接続は、ソケット接続と読んイベント、書き込みイベントを含め、パッケージに接続されています。使用接続、我々は簡単に接続、送信データを確立し、データを受信することができ、我々はすべてのバックエンドサービスを扱うことができます。これは、nginxのHTTPリクエスト処理は、接続に基づいています。

どのようにnginxの接続プロセスを経由して?

  1. nginxのは、起動時に、必要なリスニングポートとIPアドレスを与えるために、構成ファイルを解析します。
  2. 監視ソケット良いの初期化処理では、マスター(すなわち指定されたIPアドレスのポートにバインドされ、addrreuseなど、一連のソケットを作成し、聞きます)
  3. 複数のサブプロセス、新しい接続を受け入れる競合する子をフォーク。
  4. クライアントは、nginxのへの接続を開始します
  5. スリーウェイハンドシェイクを介してクライアントとサーバは接続を確立します
  6. サブプロセスが正常に(ソケットがユーザプロセスとTCP / IPプロトコルとの間の仲介者として機能するインターフェースであり、完全なTCP / IPプロトコルの書き込み、ユーザーのみであることができるインタフェースを理解する必要がある)、接続されたソケット接続を受け入れます
  7. nginxのパッケージ接続の作成した子プロセス、すなわちngx_connection_t構造
  8. クライアントと対話するためにデータを読み書きするための読み取りおよび書き込みハンドラ、イベントを追加するための時間を設定します
  9. nginxのか、アクティブな接続されたクライアントの電源をオフ

どのようにクライアント接続要求の他のサービスとしてnginxのに対処するには?

  1. nginxのは、最初のngx_connection_t構造を取得します
  2. ソケットを作成し、(例えば、非ブロッキングとして)ソケットのプロパティを設定します
  3. 読みするイベントや書き込みを追加
  4. 呼び出し接続への接続/読み取り/書き込みを呼び出し
  5. 接続をオフに
  6. リリースngx_connection_t

接続のnginxの最大数を確立することができるどのくらいですか?

  プロセスファイルとして、プロセスサポートごとの接続の最大数を設定し、その値がNOFILEより大きい場合、接続の実際の最大数はNOFILE(動作しているシステムでは、プロセスは(FDファイルディスクリプタfdをfdを開くことができworker_connectonsを設定することでnginxのオープンポインタ・エントリ)の最大数はulimitの-nコマンドによって得ることができる。ソケットは、FDを占有して実行するとFD、その後、ソケットを作成失敗します)。

  各ワーカー・プロセスは、(ngx_connection_tアレイ構造worker_connectionsサイズ)、nginxの使用後、free_connectionsから1を得る、各接続を取得し、リストfree_connectionsを介してすべてのアイドルngx_connection_tを保存するために別の接続プールを有しますその後、フリーリストに戻さ。

  全体的に、ローカルリソースに対するHTTPリクエストは、同時サポートの最大数は、worker_connections * worker_processesであり、それはworker_processes / 2 * worker_connectionsにリバースプロキシ、同時の最大数として、HTTPの場合は、リバースプロキシサーバーので、それぞれが2つのリンクを占有します、同時クライアント接続とバックエンドサービスへのリンクを確立します。

 

おすすめ

転載: www.cnblogs.com/smallzhen/p/12623585.html