nginxのアーキテクチャとワークフロー

     nginxのは無料、オープンソース、高性能なHTTPサーバであるとプロキシだけでなく、IMAP / POP3プロキシサーバーを逆。nginxの高いパフォーマンス、安定性、豊富な機能セット、簡単な構成、低資源消費と有名なだけでなく、解決するためにC10K問題のサーバーをと書きます。本論文では、アーキテクチャおよびワークフローnginxのを説明しています。

以下、nginxのアーキテクチャ

 

 

1.nginxが(外部信号を受信し、マスタ・プロセスを開始し、複数のワーカープロセス(woekerプロセスの数を構成することができ、コア一般的な設定と機械の同数)、マスタプロセスはワーカープロセスを管理する責任があります後、信号は、各ワーカー・プロセスに送られます。 、)の状態を実行しているワーカープロセスを監視。

2.基本的なネットワークイベント、プロセスの処理を担当作業員は、クライアントの要求に対抗するために一緒にワーカープロセスの間に、独立したピアです。

3.nginxは、マルチプロセス・モデル、イベント駆動型非同期非ブロッキングIOモデルです。

第二に、マルチプロセスの利点は、nginxの+非同期非ブロッキングIOモデル

互いに独立して1プロセスは、プロセス異常、他のプロセスは、サービスの安定性を確保するためにサービスを継続するために、影響を受けません。

2.独立したリソースプロセス間のアイソレーションとは、不要なロック操作の多くを回避し、処理効率を向上させます。

マルチプロセスモデルは、同時サービスの低い数をもたらすが、非同期IOは、この問題を解決する非ブロッキングするがコンテキストの一般的な問題を回避するために3は、マルチスレッドモデルを切り替えます。

 

第三に、どのように複数のプロセス間で共同作業をします

「マルチプロセス作業1.生成することができる雷の群れ効果を」問題

          操作のマルチプロセスモードは、以下に示すように:

         

          接続は、各ワーカー・プロセスは、この接続に対処する可能性があり、中に来て、どのようにそれを行うには?マスタープロセスフォークオーバーによって、各ワーカー・プロセスの最初の後、マスタプロセスここでは、最初に待機ソケットを確立する必要が各ワーカー・プロセスは、このソケット(ノート受け入れることができるように、そして、より多くのワーカープロセスをフォーク:同じではありませんがソケット、同じIPアドレスとポートからのソケット接続を取得するだけで、各プロセス)、そう、リクエストが来た後、すべてがこのソケット上の労働者が通知を受け取ります受け入れますが、一つだけが要求と労働者の成功を受け、処理は、他の労働者が失敗します受け取り、これは「ある大群効果」。

          また、このモードでは、それは「労働者の間で負荷の不均衡」であり、別の問題につながります!しかし、運が優れているすべてのワーカープロセスより勤勉場合は、他のプロセスが非常に少数の仕事の機会であってもよいし、要求されたタスクのために戦っている間、複数の作業員は、これらの勤勉なプロセスは非常に忙しく、それによって同時実行サーバーを減らすことですパフォーマンス。だから、nginxのは、この2つの問題を解決する方法ですか?

問題の労働者協同組合ソリューション間2.Nginx

 

         投稿キューワーカープロセスにngx_posted_accept_events(イベントを受け入れる)通常のイベントngx_posted_eventsを受け入れるのepollキューに生成されますが(イベントを読んで)イベントキューから接続を取得受け入れ、投稿キューから各ワーカー自身のイベント処理を取得することです。

         イベント接続ので「避けて、キューを受け入れるから取ることができ受け入れるキューから接続を取得するとき。イベントでは、あなたはロック(accept_mutexロック)を取得する必要がある、とだけプロセスでロックを取得大群効果を」。

         B。上記ロックプリエンプション決意値が負荷閾値ワーカープロセスに基づいて決定される(接続処理の総数が接続の合計数に達していない<worker_connectionsは> 7/8、イベントへの直接アクセスを達成していないつかむませんロックは、必要に到達します労働者の問題間の負荷の不均衡を解消するように第1、)ロックを取得し、イベントを取得。

 

おすすめ

転載: www.cnblogs.com/green-technology/p/nginx_first.html