Nginx は現在、最も人気のあるロード バランサーの 1 つです。インターネット トラフィックの急激な増加に直面し、特に同時実行性の高いシナリオでは、インターフェイス電流制限も非常に重要です。 Nginx には、アクセス頻度の制限と同時接続数の制限という、フローを制限する主な 2 つの方法があります。 レート制限は、NGINX の最も便利な機能の 1 つですが、最も誤解され、誤って設定される機能の 1 つでもあります。この機能を使用すると、一定期間内にユーザーが実行できる HTTP リクエストの数を制限できます。リクエストは、ホームページの GET リクエストやログイン フォームの POST リクエストのように単純なものになります。 NGINX レート制限の仕組み NGINX スロットリングでは、帯域幅が制限されている場合のバーストを処理するために通信やパケット交換コンピュータ ネットワークで広く使用されているリーキー バケット アルゴリズムが使用されます。これは、上から水が満たされ、下から水が漏れているバケツに非常に似ています。水が満たされる速度が水が漏れる速度よりも速い場合、バケツは溢れてしまいます。 リクエスト処理プロセスでは、水はクライアントからのリクエストを表し、バケツは先入れ先出し (FIFO) アルゴリズムに従ってリクエストが処理されるのを待つキューを表します。漏れ水は、リクエストがバッファから出てサーバーによって処理されることを表し、オーバーフローは、リクエストがドロップされて処理されないことを表します。 1. アクセス頻度を制限する(通常のトラフィック) Nginx では、リーキー バケット アルゴリズムの原理に基づいて、ngx_http_limit_req_module モジュールを使用してリクエストのアクセス頻度を制限します。次に、nginx の limit_req_zone および limit_req 命令を使用して、単一の IP のリクエスト処理レートを制限します。 構文:
2. アクセス頻度を制限する(バーストトラフィック) 上記の構成では、トラフィックが急増した場合、過剰なリクエストは拒否され、バーストトラフィックを処理できなくなります。では、バーストトラフィックにはどのように対処すればよいのでしょうか? Nginx はバースト トラフィックの問題を解決するために burst パラメータを提供しており、nodelay パラメータと組み合わせて使用されます。バーストとは、設定された処理速度を超えた後に処理できる追加リクエストの数を意味します。 burst=20 nodelay は、これらの 20 のリクエストが遅延なく即座に処理されることを意味し、これは特別な事項の特別な処理に相当します。ただし、これらの 20 件のバースト要求がすぐに処理されたとしても、後続の要求はすぐには処理されません。 burst=20 は、キャッシュ キューの 20 スロットを占有するのと同じです。リクエストが処理されたとしても、これらの 20 スロットは 100 ミリ秒ごとに 1 つずつしか解放できません。これにより、安定したレートの効果が得られるだけでなく、突然のトラフィックフローにも正常に対処できるようになります。 3.同時接続数を制限する Nginx の ngx_http_limit_conn_module モジュールは、リソース接続の数を制限する機能を提供します。これは、limit_conn_zone および limit_conn 命令を使用して実行できます。 limit_conn perip 20: 対応するキーは $binary_remote_addr です。これは、単一の IP が同時に保持できる接続が最大 20 に制限されていることを意味します。 limit_conn perserver 100: 対応するキーは $server_name で、仮想ホスト (サーバー) が同時に処理できる同時接続の合計数を示します。接続は、リクエスト ヘッダーがバックエンド サーバーによって処理された後にのみカウントされることに注意してください。 さて、上記の電流制限方法については理解できましたか? 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: JS を使用してクリップボード内の Excel コンテンツを解析する方法
>>: win10でのmysql5.7.21解凍バージョンのインストールチュートリアル
この記事では、例を使用して、MySQL で効率的なインデックスを作成する方法について説明します。ご参...
以前は、角を丸くするのは非常に面倒でしたが、CSS3 では、角を丸くするのは非常に簡単になり、bor...
この記事では、主に次のような Vue ドラッグ アンド ドロップの簡単な実装を紹介します。レンダリン...
JS、CSSについてCS: ...上部のスタイルシートCSS式を避ける外部JS、CSSの使用JSと...
プロジェクト内のページの長さはおよそ2000px以上あり、背景画像にはテクスチャやグラデーションがあ...
JavaScriptをクリックすると画像の形状が変わります(変形の応用)。参考までに具体的な内容は...
実際、多くの人が「テーブルは絶対に使用すべきではないと聞いたことがある」と言いますが、これは絶対に間...
目次CSS カスタム変数機能は古くから存在していますが、実際の開発ではあまり使用されていません。その...
Linux centos7 環境に MySQL をインストールする手順の詳細な紹介MySQLをインス...
この記事では、Fedora 28 に i3 をインストールして簡単に設定する方法を説明します。 1....
mysqladmin は管理と操作を行う公式の mysql クライアント プログラムです。MySQL...
DIV+css構造 CSSレイアウトを学んでいますか?まだ純粋な CSS レイアウトを完全に習得でき...
序文nginx モジュールには、公式とサードパーティの 2 種類があります。nginx のインストー...
Docker を実行するには root 権限が必要です。非 root ユーザーに docker コマ...
序文ターミナルを使用してデータベースまたはテーブルを作成するたびに、文字セットが latin1 であ...