Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Drosselung von Anfragen für die Amazon RDS-API
Amazon RDS drosselt API-Anfragen für jeden AWS-Konto in jedem AWS Region. Dies trägt zur Leistung des Dienstes bei und gewährleistet eine faire Nutzung für alle Amazon RDS-Kunden. Durch die Drosselung wird sichergestellt, dass Anfragen an die Amazon RDS-API die maximal zulässigen API-Anforderungslimits nicht überschreiten. Die Anforderungslimits gelten für API-Anfragen aus beliebigen Quellen, einschließlich der folgenden.
-
Ihr eigener Anwendungscode mit einem AWS SDK
-
Ein Befehlszeilentool wie das AWS CLI
-
Das Amazonas Aurora Konsole
-
Ein Drittanbieter-Tool, das die Anmeldeinformationen Ihres Kontos verwendet, z. B. ein Infrastructure-as-Code- oder Überwachungstool
Amazon Aurora verwendet die Amazon RDS-API, daher gelten dieselben Grenzwerte für Aurora-API-Anfragen.
Wenn Sie Amazon RDS-API-Operationen verwenden und das Standardlimit für die Anzahl der Aufrufe pro Sekunde überschreiten, gibt die Amazon RDS-API einen Fehler wie den folgenden aus.
ClientError: Ein Fehler ist aufgetreten (ThrottlingException) beim Aufrufen des API_name Bedienung: Rate überschritten.
Dieser Fehler bedeutet, dass Ihr Konto das API-Anforderungslimit überschritten hat. Standardmäßig können Sie bis zu 300 Anfragen in einem Burst und kontinuierlich 12 Anfragen pro Sekunde stellen. Um diesen Fehler zu vermeiden, wiederholen Sie die Anfrage mit exponentiellem Backoff, reduzieren Sie Ihre Anforderungsrate oder fordern Sie eine Erhöhung des Limits an. Weitere Informationen finden Sie unter Wiederholungen und exponentieller Backoff, Reduzieren Sie die Anzahl der API-Anfragen und Anfordern einer -Limit-Erhöhung.
Themen
Wie wird die Drosselung angewendet
Amazon RDS verwendet einen Token-Bucket, um API-Anfragen zu drosseln. Wenn Sie wissen, wie der Bucket funktioniert, können Sie vorhersagen, wann eine Drosselung erfolgt, und Ihre Anforderungsrate planen.
Ihr Konto hat eine Eimer das enthält eine Reihe von Spielmarken. Für jede Anfrage wird ein Token ausgegeben, und Amazon RDS fügt die Tokens mit gleichbleibender Geschwindigkeit wieder hinzu. Die Anzahl der Token im Bucket ist die Anzahl der Anfragen, die Sie in diesem Moment stellen können.
Ihr Konto hat jeweils einen Bucket AWS Region, die von allen Amazon RDS-API-Aktionen gemeinsam genutzt wird. Jede Anforderung, die Sie stellen, entfernt ein Token aus dem Bucket. Angenommen, die Bucket-Größe beträgt 300 Token. Sie können bis zu 300 Anfragen in einer Sekunde stellen. Wenn Sie 300 Anfragen in einer Sekunde überschreiten, werden Sie gedrosselt und die verbleibenden Anfragen innerhalb dieser Sekunde schlagen fehl.
Eimer werden automatisch mit einer festgelegten Rate aufgefüllt. Wenn der Bucket unter seiner maximalen Kapazität liegt, fügt Amazon RDS ihm jede Sekunde eine festgelegte Anzahl von Tokens hinzu, bis er seine maximale Kapazität erreicht hat.
Wenn der Bucket voll ist, wenn die Refill-Token eintreffen, werden sie vom Bucket weggeworfen. Der Eimer kann nicht mehr als die maximale Anzahl an Tokens aufnehmen.
Angenommen, der Bucket ist 300 Tokens groß und die Nachfüllrate beträgt 12 Tokens pro Sekunde. Wenn Sie 300 Anfragen in einer Sekunde stellen, sinkt der Bucket auf Null (0) Token.
Der Eimer füllt sich dann jede Sekunde um 12 Token auf. Es erreicht seine maximale Kapazität von 300 Token nach 25 Sekunden, wenn Sie während dieser Zeit keine Anfragen stellen.
Sie müssen nicht warten, bis der Bucket vollständig voll ist, bevor Sie API-Anfragen stellen können. Sie können Refill-Token verwenden, wenn sie dem Bucket hinzugefügt werden. Wenn Sie den Bucket leeren, indem Sie 300 Anfragen in einer Sekunde stellen, können Sie weiterhin 12 Anfragen pro Sekunde stellen, indem Sie die Refill-Token verwenden, wenn sie dem Bucket hinzugefügt werden. Der Bucket kann nur dann bis zur maximalen Kapazität aufgefüllt werden, wenn Sie weniger als 12 Anfragen pro Sekunde stellen.
Amazon RDS begrenzt Anfragen, die AWS Dienste wie AWS CloudFormation, machen Sie in Ihrem Namen. Für diese Anfragen werden keine Tokens aus dem Bucket Ihres Kontos verbraucht.
Größe des Token-Buckets und Nachfüllrate
In der folgenden Tabelle sind die standardmäßigen Grenzwerte für die Drosselung von API-Anfragen für jede Anforderung aufgeführt AWS-Konto in jedem AWS Region.
| API-Aktionen | Maximale Kapazität des Buckets | Bucket-Auffüllrate (pro Sekunde) |
|---|---|---|
| Alle Amazon RDS-API-Aktionen | 300 | 12 |
Dies sind die Standardgrenzwerte. Wenn AWS hat die Limits für Ihr Konto erhöht, Ihre Limits sind höher.
Weitere Informationen über Kontingente für die Anzahl der Amazon RDS-Ressourcen, die Sie in Ihrem Konto erstellen können, finden Sie unter Kontingente in Amazon Aurora. Weitere Informationen über Amazon RDS-Serviceendpunkte und Kontingente finden Sie unter Endpunkte und Kontingente des Amazon Relational Database Service in der Allgemeine Amazon Web Services-Referenz.
Wiederholungen und exponentieller Backoff
Ihre Anwendung muss möglicherweise eine API-Anfrage erneut versuchen. Beispiel:
-
Um nach einer Aktualisierung des Status einer Ressource zu suchen, z. B. einer DB-Instance, die gerade erstellt oder geändert wird
-
Um eine große Anzahl von Ressourcen aufzulisten (z. B. alle Ihre DB-Snapshots)
-
Um eine Anfrage erneut zu versuchen, nachdem sie aufgrund eines Serverfehlers (5xx) oder eines Drosselungsfehlers fehlgeschlagen ist
Bei einem Client-Fehler (4xx), bei dem es sich nicht um einen Drosselungsfehler handelt, überarbeiten Sie die Anfrage jedoch, um das Problem zu beheben, bevor Sie die Anfrage erneut versuchen.
Der Status der Ressource ändert sich
Bevor Sie mit der Abfrage beginnen, um nach Statusaktualisierungen zu suchen, geben Sie der Anfrage Zeit, bis sie möglicherweise abgeschlossen ist. Warten Sie beispielsweise einige Minuten, bevor Sie überprüfen, ob Ihre DB-Instance verfügbar ist. Wenn Sie mit der Abfrage beginnen, verwenden Sie ein angemessenes Schlafintervall zwischen aufeinanderfolgenden Anfragen, um die Rate der API-Anfragen zu senken. Um die besten Ergebnisse zu erzielen, verwenden Sie ein zunehmendes oder variables Energiesparintervall.
Alternativ können Sie Amazon verwenden EventBridge um Sie über den Status Ihrer Ressourcen zu informieren, anstatt eine Umfrage durchzuführen. Sie können beispielsweise ein Ereignis empfangen, wenn eine DB-Instance verfügbar wird oder wenn ein Snapshot abgeschlossen ist. Weitere Informationen finden Sie unter Eine Regel erstellen, die bei einem ausgelöst wird Amazon Aurora event.
Wiederholversuche
Wenn Sie eine API-Anfrage abfragen oder erneut versuchen müssen, verwenden Sie einen exponentiellen Backoff-Algorithmus, um das Schlafintervall zwischen den Anfragen zu berechnen. Warten Sie zwischen den Wiederholungsversuchen zunehmend länger. Legen Sie eine maximale Verzögerung und eine maximale Anzahl von Wiederholungsversuchen fest. Fügen Sie Jitter (zufällige Verzögerung) hinzu, um aufeinanderfolgende Kollisionen zu verhindern. Hinweise zur Implementierung finden Sie unter Timeouts, Wiederholungen und Backoff mit Jitter auf der AWS Webseite der Builders' Library
Jeder AWS SDK implementiert automatische Wiederholungslogik und versucht es erneut ThrottlingException standardmäßig Fehler. Weitere Informationen finden Sie unter Verhalten erneut versuchen in der AWS Referenzhandbuch für SDKs und Tools.
Reduzieren Sie die Anzahl der API-Anfragen
Da sich alle API-Aktionen einen Bucket teilen, wird durch die Reduzierung der Anfragen von jedem Anrufer Kapazität für jeden anderen Anrufer in Ihrem Konto frei. Bevor Sie eine Erhöhung des Limits beantragen, sollten Sie Folgendes berücksichtigen.
- Antworten zwischenspeichern
-
Informationen zurückgegeben von
Describe*Aktionen, wieDescribeDBInstancesundDescribeDBClusters, ändert sich normalerweise selten. Zwischenspeichern Sie die Ergebnisse und verwenden Sie sie wieder, anstatt die API jedes Mal aufzurufen, wenn Sie die Informationen benötigen. - Begrenzen Sie Ihre Anforderungsrate auf der Kundenseite
-
Gestalten Sie Ihre Rate ausgehender Anfragen so, dass sie vor dem Senden von Anfragen unter der Dauerrate bleibt, anstatt sich nach der Drosselung auf Wiederholungsversuche zu verlassen.
- Ersetzen Sie Polling durch Ereignisse
-
Verwenden Sie Amazon EventBridge um über Änderungen des Ressourcenzustands informiert zu werden, anstatt wiederholt anzurufen
Describe*Aktionen. - Fordern Sie nur das an, was Sie benötigen
-
Geben Sie eine Kennung an oder verwenden Sie die
FiltersParameter, sodass einDescribe*Aktion gibt nur die Ressourcen zurück, an denen Sie interessiert sind, und blättern Sie durch große Ergebnismengen mitMaxRecordsundMarker. - Verteilen Sie geplante Anfragen
-
Wenn viele Mitarbeiter, geplante Jobs oder Monitoring-Agenten die API gleichzeitig aufrufen, fügen Sie jeweils eine zufällige Verzögerung hinzu, sodass Anfragen über einen längeren Zeitraum verteilt werden und nicht in einem Burst eingehen.
Identifizieren Sie die Quelle der gedrosselten Anfragen
AWS CloudTrail zeichnet jede API-Anfrage in Ihrem Konto auf. Jeder Datensatz zeigt Ihnen, wer die Anfrage gestellt hat, welches Tool sie gestellt hat und ob sie erfolgreich war. Benutzen AWS CloudTrail um herauszufinden, welche Benutzer, Rollen oder Tools die meisten Ihrer Anfragen stellen. Weitere Informationen zur AWS CloudTrail -Protokollierung finden Sie unter Überwachung von Amazon Aurora AWS CloudTrail.
Sehen Sie sich Ihre aktuellen API-Limits an
Service Quotas verwaltet die Amazon RDS-API-Drosselungslimits nicht, und sie werden nicht in der Service Quota-Konsole angezeigt. Es sei denn AWS hat die Limits für Ihr Konto erhöht, es gelten die Standardlimits. Wenn Ihr Konto eine Erhöhung erhalten hat und Sie Ihre aktuellen Limits nicht kennen, öffnen Sie eine Support-Anfrage, um diese zu bestätigen.
Anfordern einer -Limit-Erhöhung
Sie können eine Erhöhung der API-Drosselungslimits für Ihre AWS-Konto indem Sie einen Support-Fall öffnen. Limiterhöhungen sind keine Selbstbedienung, und AWS genehmigt sie nicht automatisch. AWS überprüft deine Anfrage und deinen letzten Traffic, bevor ein neues Limit angewendet wird. Nehmen Sie sich Zeit für die Überprüfung und das Inkrafttreten des neuen Limits.
Empfehlungen
Beachten Sie die folgenden Empfehlungen, bevor Sie eine Erhöhung beantragen.
-
Basieren Sie Ihre Anfrage auf Ihrer gemessenen Anforderungsspitzenrate. AWS überprüft Ihr Verkehrsmuster, bevor eine Erhöhung genehmigt wird.
-
Wenn Sie bei anhaltendem Verkehr gedrosselt werden, sollten Sie der Erhöhung der Bucket-Nachfüllrate Priorität einräumen. Erhöhen Sie die maximale Kapazität des Buckets, wenn Sie bei kurzen Unterbrechungen gedrosselt werden.
-
Verteilen Sie geplante Jobs oder Gruppen von Mitarbeitern, die zur gleichen Zeit beginnen, bevor Sie eine Erhöhung beantragen. Durch die Verteilung von Anfragen wird die Drosselung in der Regel behoben, ohne dass das Limit erhöht wird.
-
Reichen Sie Anfragen für geplante Ereignisse, wie z. B. eine Migration oder eine große Bereitstellung, rechtzeitig vor der Veranstaltung ein.
Öffnen eines Support-Falls.
Wenn Sie nach Überprüfung der Empfehlungen immer noch ein höheres Limit benötigen, erstellen Sie einen Fall in der AWS Support Center-Konsole
Um die Überprüfung zu beschleunigen, kopieren Sie die folgende Vorlage in die Fallbeschreibung. Ersetzen account_id, region, und die anderen Werte mit Ihren eigenen Informationen:
Please increase the Amazon RDS API throttling limits for my account. Account ID(s):account_idRegion(s):regionDescription:use_caseAPI actions:api_actionsTime window:time_windowChanges already made:changes_madeRequested limits: Bucket maximum capacity:current_bucket_capacity->requested_bucket_capacityBucket refill rate:current_refill_rate->requested_refill_rate
Die Vorlage verwendet die folgenden Werte.
account_id-
Die AWS-Konto ID oder IDs, die erhöht werden müssen.
region-
Die AWS Region oder Regionen, in denen Sie gedrosselt werden.
use_case-
Ihr Anwendungsfall und die Tools, die die Amazon RDS-API aufrufen, wie Ihre Anwendung, AWS CLI, ein Infrastructure-as-Code-Tool oder ein Monitoring-Agent.
api_actions-
Die Amazon RDS-API-Aktionen, die die meisten Ihrer Anfragen generieren.
time_window-
Ein Zeitfenster von einer Stunde (in UTC), in dem Sie Spitzendrosselung oder Auslastung festgestellt haben. Für eine geplante Veranstaltung das geplante Start- und Enddatum.
changes_made-
Alles, was Sie bereits versucht haben, um die Anzahl der Anfragen zu reduzieren, z. B. Wiederholungsversuche mit exponentiellem Backoff, Caching oder seltener Abfragen.
current_bucket_capacity,requested_bucket_capacity-
Ihre aktuelle und angeforderte maximale Bucket-Kapazität (Burst).
current_refill_rate,requested_refill_rate-
Ihre aktuelle und angeforderte Bucket-Nachfüllrate, ausgedrückt in Anfragen pro Sekunde (dauerhaft).
Je mehr Kontext Sie zu Ihrem Traffic angeben, desto schneller AWS kann das richtige Limit für dich finden.