Nginx ist mittlerweile einer der beliebtesten Load Balancer. Angesichts des rasanten Anstiegs des Internetverkehrs ist eine Begrenzung des Schnittstellenstroms ebenfalls sehr wichtig, insbesondere in Szenarien mit hoher Parallelität. Nginx bietet zwei Möglichkeiten, den Datenfluss zu begrenzen: Begrenzung der Zugriffshäufigkeit und Begrenzung der Anzahl gleichzeitiger Verbindungen. Die Ratenbegrenzung ist eine der nützlichsten Funktionen von NGINX, sie wird jedoch auch am häufigsten missverstanden und falsch konfiguriert. Mit dieser Funktion können Sie die Anzahl der HTTP-Anfragen begrenzen, die ein Benutzer in einem bestimmten Zeitraum stellen kann. Die Anfrage kann so einfach sein wie eine GET-Anfrage für eine Homepage oder eine POST-Anfrage für ein Anmeldeformular. So funktioniert die Ratenbegrenzung bei NGINX Die Drosselung von NGINX verwendet den Leaky-Bucket-Algorithmus, der in der Kommunikation und in paketvermittelten Computernetzwerken häufig verwendet wird, um Bursts bei begrenzter Bandbreite zu bewältigen. Es ist ganz ähnlich wie bei einem Eimer, der sich von oben mit Wasser füllt und unten ausläuft. Wenn die Geschwindigkeit, mit der das Wasser einfließt, größer ist als die Geschwindigkeit, mit der das Wasser austritt, läuft der Eimer über. Im Anforderungsverarbeitungsprozess stellt „Wasser“ Anforderungen vom Client dar und der „Bucket“ stellt eine Warteschlange dar, in der Anforderungen darauf warten, gemäß dem First-In-First-Out-Algorithmus (FIFO) verarbeitet zu werden. Auslaufendes Wasser steht für Anfragen, die den Puffer verlassen und vom Server verarbeitet werden, und Überlauf steht für Anfragen, die gelöscht und nie bearbeitet werden. 1. Zugriffshäufigkeit begrenzen (normaler Verkehr) In Nginx verwenden wir das Modul ngx_http_limit_req_module, um die Zugriffshäufigkeit von Anfragen zu begrenzen, basierend auf dem Prinzip des Leaky-Bucket-Algorithmus. Als Nächstes verwenden wir die nginx-Anweisungen limit_req_zone und limit_req, um die Anforderungsverarbeitungsrate einer einzelnen IP zu begrenzen. Syntax:
2. Zugriffshäufigkeit begrenzen (Burst-Verkehr) Wenn der Datenverkehr gemäß der obigen Konfiguration plötzlich zunimmt, werden die überzähligen Anfragen abgelehnt und der Burst-Datenverkehr kann nicht verarbeitet werden. Wie geht man also mit dem Burst-Datenverkehr um? Nginx bietet den Burst-Parameter, um das Problem des Burst-Verkehrs zu lösen, und wird in Verbindung mit dem Nodelay-Parameter verwendet. Burst bezeichnet die Anzahl zusätzlicher Anfragen, die nach Überschreiten der festgelegten Verarbeitungsrate verarbeitet werden können. Burst=20 Nodelay bedeutet, dass diese 20 Anfragen sofort und ohne Verzögerung verarbeitet werden, was einer Sonderbehandlung von Sonderangelegenheiten entspricht. Selbst wenn diese 20 Burst-Anfragen sofort verarbeitet werden, werden nachfolgende Anfragen jedoch nicht sofort verarbeitet. Burst = 20 entspricht dem Belegen von 20 Slots in der Cache-Warteschlange. Selbst wenn die Anforderung verarbeitet wird, können diese 20 Slots nur alle 100 ms einzeln freigegeben werden. Dadurch wird eine stabile Rate erreicht, gleichzeitig können plötzliche Verkehrsströme aber auch normal bewältigt werden. 3. Begrenzen Sie die Anzahl gleichzeitiger Verbindungen Das Modul ngx_http_limit_conn_module von Nginx bietet die Funktion, die Anzahl der Ressourcenverbindungen zu begrenzen. Dies kann mit den Anweisungen limit_conn_zone und limit_conn erfolgen. limit_conn perip 20: Der entsprechende Schlüssel ist $binary_remote_addr, was bedeutet, dass eine einzelne IP auf maximal 20 Verbindungen gleichzeitig beschränkt ist. limit_conn perserver 100: Der entsprechende Schlüssel ist $server_name, der die Gesamtzahl der gleichzeitigen Verbindungen angibt, die der virtuelle Host (Server) gleichzeitig verarbeiten kann. Beachten Sie, dass die Verbindung erst gezählt wird, nachdem der Anforderungsheader vom Backend-Server verarbeitet wurde. Okay, sind Ihnen die oben genannten Methoden zur Strombegrenzung klar? Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: So verwenden Sie JS zum Parsen des Excel-Inhalts in der Zwischenablage
>>: Installations-Tutorial zur dekomprimierten Version von MySQL5.7.21 unter Win10
Grundlegende Konzepte Aktueller Lesevorgang und S...
Inhaltsverzeichnis 1. Datenbankbeschränkungen 1.1...
Inhaltsdetail-Tags: <h1>~<h6>Titel-Ta...
Inhaltsverzeichnis 1. Hintergrund 2. Voraussetzun...
Vorwort Tipp: Das Folgende ist der Hauptinhalt di...
Container-Autostart Docker bietet einen Neustartr...
In Bezug auf andere, professionellere Blogsysteme...
Code kopieren Der Code lautet wie folgt: <div ...
!DOCTYPE Gibt die Document Type Definition (DTD) ...
filter werden im Allgemeinen verwendet, um bestim...
In diesem Artikelbeispiel wird der spezifische Co...
Dieser Artikel stellt hauptsächlich die Analyse d...
Kommen wir ohne weitere Umschweife direkt zum Cod...
Ich habe in letzter Zeit viel Wissen und Artikel ...
Weiterführende Literatur: MySQL8.0.20-Installatio...