検索
ホームページ運用・保守NginxNginxサーバーのソケットセグメンテーションとは何ですか

nginx の 1.9.1 リリースでは、so_reuseport ソケット オプションの使用を許可する新機能が導入されています。このオプションは、dragonfly bsd や linux (カーネル バージョン 3.9 以降) を含む多くのオペレーティング システムの新しいバージョンで利用できます。このソケット オプションを使用すると、複数のソケットが同じ IP とポートの組み合わせでリッスンできるようになります。カーネルは、これらのソケット間で受信接続の負荷を分散できます。 (nginx Plus の顧客の場合、この機能は年末までにリリースされるバージョン 7 に追加される予定です)

so_reuseport オプションには多くの実用的なアプリケーションの可能性があります。他のサービスもこれを使用して、実行中にローリング アップグレードを単純に実装できます (nginx はすでにローリング アップグレードをサポートしています)。 nginx の場合、このオプションを有効にすると、特定のシナリオでロックの競合が軽減され、パフォーマンスが向上します。

次の図で説明されているように、so_reuseport オプションが有効な場合、別のリッスン ソケットがアクセスされた接続をワーカー プロセスに通知し、各ワーカー スレッドが接続の取得を試みます。

Nginxサーバーのソケットセグメンテーションとは何ですか

so_reuseport オプションが有効な場合、IP アドレスとポート バインディング接続ごとに複数のソケット リスナーが存在し、各ワーカー プロセスに 1 つを割り当てることができます。システム カーネルは、どの有効なソケット リスナー (そして暗黙的にどのワーカー プロセスに対して) が接続を取得するかを決定します。これにより、新しい接続を取得する際のワーカー プロセス間のロックの競合 (翻訳者注: 相互に排他的なリソース ロックの取得を要求するワーカー プロセス間の競合) が減少し、マルチコア システムのパフォーマンスが向上します。ただし、これは、ワーカー プロセスがブロッキング操作に陥った場合、そのブロッキングは接続を受け入れたワーカー プロセスに影響するだけでなく、カーネルによって割り当てられるようにスケジュールされたワーカー プロセスにも接続要求を送信させることになることも意味します。ブロックされてしまう。

Nginxサーバーのソケットセグメンテーションとは何ですか

共有ソケットのセットアップ

so_reuseport ソケット オプションが機能するには、http または tcp である必要があります。 (ストリーム モード) 通信オプションの listen 項目は、次の例のように、最新の再利用ポート パラメーターを直接導入します。

コードをコピーします。 コードは次のとおりです。


http {
server { listen 80 reuseport;
}

reuseport パラメータを参照した後は、ミューテックス (mutex) が再利用ポートに対して冗長であるため、accept_mutex パラメータは参照されたソケットに対して無効になります。再利用ポートを使用しないポートの場合でも、accept_mutex を設定することが重要です。

Reuseport のベンチマーク パフォーマンス テスト

私は 36 コア AWS インスタンスでベンチマーク ツールを実行し、4 つの nginx ワーカー プロセスをテストしました。ネットワーク、クライアントと nginx の両方の影響を軽減するためにローカルで実行している場合、nginx はファイルの代わりに ok 文字列を返します。 3 つの nginx 設定、default (accept_mutex on に相当)、accept_mutex off、reuseport を比較しました。図に示されているように、reuseport の 1 秒あたりのリクエストは他のリクエストの 2 ~ 3 倍であり、レイテンシとレイテンシの標準偏差も減少しています。


別の関連するパフォーマンス テストを実行しました。クライアントと nginx は別のマシン上にあり、nginx は html ファイルを返しました。以下の表に示すように、再利用ポートを使用したレイテンシの削減は前のパフォーマンス テストと同様であり、レイテンシの標準偏差の削減がより顕著です (ほぼ 10 分の 1)。他の結果 (表には示されていません) も同様に有望です。再利用ポートを使用すると、負荷がワーカー プロセス間で均等に分散されます。デフォルトの条件 (accept_mutex がオンの場合と同等) では、一部のワーカーがより高い負荷の割合を受け取りますが、accept_mutex がオフの場合はすべてのワーカーがより高い負荷を受け取ります。

コードをコピーします。 コードは次のとおりです。


latency (ms) latency stdev (ms) cpuload

default 15.65 26.59 0.3

accept_mutex off 15.59 26.48 10Nginxサーバーのソケットセグメンテーションとは何ですかreuseport 12.35 3.15 0.3

これらのパフォーマンス テストでは、接続リクエストの速度は非常に高速ですが、リクエストに多くの処理は必要ありません。他の基本的なテストでは、アプリケーション トラフィックがこのシナリオに適合する場合、再利用ポートでもパフォーマンスが大幅に向上する可能性があることを指摘する必要があります。 (reuseport パラメーターは、電子メールなどのメール コンテキストの listen ディレクティブでは使用できません。電子メールのトラフィックはこのシナリオに間違いなく一致しないためです。) 大規模に直接適用するのではなく、最初にテストすることをお勧めします。

以上がNginxサーバーのソケットセグメンテーションとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事は亿速云で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
Nginxユニット:主要な機能と機能Nginxユニット:主要な機能と機能Apr 25, 2025 am 12:17 AM

Nginxunitは、複数のプログラミング言語をサポートし、動的構成、ゼロダウンタイム更新、組み込みのロードバランシングなどの機能を提供するオープンソースアプリケーションサーバーです。 1。動的構成:再起動せずに構成を変更できます。 2。多言語サポート:Python、Go、Java、PHPなどと互換性があります。 4。ビルトインロードバランシング:リクエストは、複数のアプリケーションインスタンスに配布できます。

Nginxユニットvs他のアプリケーションサーバーNginxユニットvs他のアプリケーションサーバーApr 24, 2025 am 12:14 AM

nginxunitは、多言語プロジェクトや動的な構成要件に適した、apachetomcat、gunicorn、node.jsビルトインHTTPサーバーよりも優れています。 1)複数のプログラミング言語をサポートします。2)動的な構成リロード、3)高いスケーラビリティと信頼性を必要とするプロジェクトに適した組み込みの負荷分散機能を提供します。

Nginxユニット:アーキテクチャとその仕組みNginxユニット:アーキテクチャとその仕組みApr 23, 2025 am 12:18 AM

Nginxunitは、モジュラーアーキテクチャと動的な再構成機能により、アプリケーションのパフォーマンスと管理性を向上させます。 1)モジュラー設計には、マスタープロセス、ルーター、アプリケーションプロセスが含まれ、効率的な管理と拡張をサポートします。 2)動的再構成により、CI/CD環境に適した、実行時に構成をシームレスに更新できます。 3)多言語サポートは、言語ランタイムの動的なロードを通じて実装され、開発の柔軟性が向上します。 4)イベント駆動型モデルと非同期I/Oによって高性能が達成され、高い並行性の下でも効率的なままです。 5)申請プロセスを分離し、アプリケーション間の相互の影響を減らすことにより、セキュリティが改善されます。

Nginxユニットの使用:アプリケーションの展開と管理Nginxユニットの使用:アプリケーションの展開と管理Apr 22, 2025 am 12:06 AM

nginxunitを使用して、アプリケーションを複数の言語で展開および管理できます。 1)nginxunitをインストールします。 2)PythonやPHPなどのさまざまなタイプのアプリケーションを実行するように構成します。 3)アプリケーション管理に動的構成関数を使用します。これらの手順を通じて、アプリケーションを効率的に展開および管理し、プロジェクトの効率を向上させることができます。

Nginx vs. Apache:Webサーバーの比較分析Nginx vs. Apache:Webサーバーの比較分析Apr 21, 2025 am 12:08 AM

NGINXは、高い並行接続の処理に適していますが、Apacheは複雑な構成とモジュール拡張が必要な​​シナリオにより適しています。 1.Nginxは、高性能と低リソース消費で知られており、高い並行性に適しています。 2. Apacheは、その安定性とリッチモジュール拡張機能で知られています。これは、複雑な構成ニーズに適しています。

Nginxユニットの利点:柔軟性とパフォーマンスNginxユニットの利点:柔軟性とパフォーマンスApr 20, 2025 am 12:07 AM

Nginxunitは、動的な構成と高性能アーキテクチャにより、アプリケーションの柔軟性とパフォーマンスを向上させます。 1.動的構成により、サーバーを再起動せずにアプリケーション構成を調整できます。 2.高性能は、イベント駆動型および非ブロッキングアーキテクチャおよびマルチプロセスモデルに反映され、同時接続を効率的に処理し、マルチコアCPUを利用できます。

Nginx vs. Apache:パフォーマンス、スケーラビリティ、効率Nginx vs. Apache:パフォーマンス、スケーラビリティ、効率Apr 19, 2025 am 12:05 AM

NginxとApacheはどちらも強力なWebサーバーであり、それぞれがパフォーマンス、スケーラビリティ、効率の点で独自の利点と短所を備えています。 1)nginxは、静的なコンテンツを処理し、逆プロキシを逆にするときにうまく機能します。 2)Apacheは、動的コンテンツを処理するときにパフォーマンスが向上し、リッチモジュールサポートが必要なプロジェクトに適しています。サーバーの選択は、プロジェクトの要件とシナリオに基づいて決定する必要があります。

究極の対決:Nginx vs. Apache究極の対決:Nginx vs. ApacheApr 18, 2025 am 12:02 AM

Nginxは、高い並行リクエストの処理に適していますが、Apacheは複雑な構成と機能的拡張が必要な​​シナリオに適しています。 1.Nginxは、イベント駆動型の非ブロッキングアーキテクチャを採用しており、高電流環境に適しています。 2。Apacheはプロセスまたはスレッドモデルを採用して、複雑な構成のニーズに適したリッチモジュールエコシステムを提供します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません