Das habe ich beim ersten Lesen der Einführung von https://www.nginx.com/blog/rate-limiting-nginx/ nicht verstanden .
Jetzt bin ich sicher, dass ich es verstehe und meine Antwort ist bisher die beste. :) :)
Nehmen wir an : 10r/s
gesetzt, die maximale Leistungsfähigkeit des Servers ist zB 10000r/s
das ist , 10r/ms
und es gibt nur 1 Client im Moment.
Hier ist der Hauptunterschied zwischen 10r/s per IP burst=40 nodelay
und 10r/s per IP burst=40
.
Wie unter https://www.nginx.com/blog/rate-limiting-nginx/ dokumentiert ( ich empfehle dringend, zuerst den Artikel zu lesen (mit Ausnahme des Abschnitts zur zweistufigen Ratenbegrenzung )), behebt dieses Verhalten ein Problem. Welcher?:
In unserem Beispiel wartet das 20. Paket in der Warteschlange 2 Sekunden auf die Weiterleitung. Zu diesem Zeitpunkt ist eine Antwort darauf für den Client möglicherweise nicht mehr nützlich.
Überprüfen Sie den Entwurf, den ich gemacht habe. Die 40th
Anfrage erhält eine Antwort um, 1s
während die andere um 40th
eine Antwort erhält 4s
.
Dies kann die Serverfunktionen optimal nutzen: Antworten werden so schnell wie möglich zurückgesendet, wobei die x r/s
Beschränkung auf einen bestimmten Client / eine bestimmte IP beibehalten wird.
Aber hier gibt es auch Kosten. Die Kosten betragen:
Wenn Sie viele Clients auf dem Server sagen wir mal Client Warteschlangen A
, B
und C
.
Ohne nodelay
werden die Anfragen in einer ähnlichen Reihenfolge wie zugestellt ABCABCABC
.
Mit nodelay
ist die Reihenfolge eher AAABBBCCC
.
Ich möchte den Artikel https://www.nginx.com/blog/rate-limiting-nginx/ hier zusammenfassen.
Die wichtigste Konfiguration ist vor allem x r/s
.
x r/s
Nur überschüssige Anfragen werden sofort abgelehnt.
x r/s
+ burst
, überschüssige Anfragen werden in die Warteschlange gestellt.
1.
vs 2.
, die Kosten sind, dass auf der Client-Seite die in der Warteschlange befindlichen Anfragen die Chancen späterer Anfragen in Anspruch nehmen, die die Chance hatten, bedient zu werden.
Zum Beispiel 10r/s burst=20
gegen 10r/s
das 11th
wird Antrag soll unmittelbar nach der letztgenannten Bedingung abgelehnt werden, aber jetzt ist es eine Warteschlange gestellt und serviert. Die 11th
Anfrage nimmt die 21th
Chance der Anfrage ein.
x r/s
+ burst
+ nodelay
, Bereits erklärt.
PS Der Abschnitt zur zweistufigen Ratenbegrenzung des Artikels ist sehr verwirrend. Ich verstehe nicht, aber das scheint keine Rolle zu spielen.
Beispielsweise:
Mit dieser Konfiguration tritt bei einem Client, der einen kontinuierlichen Anforderungsstrom mit 8 U / s erstellt, das folgende Verhalten auf.
8 U / s? Ernsthaft? Es werden 17 Anfragen innerhalb von 3 Sekunden im Bild angezeigt, 17/3 = 8?