Wie kann ich API-Drosselung oder "Rate Exceeded"-Fehler in Elastic Beanstalk beheben?

Lesedauer: 4 Minute
0

Wie kann ich API-Drosselung oder "Rate Exceeded"-Fehler beheben, wenn ich AWS Elastic Beanstalk verwende?

Kurzbeschreibung

API-Aufrufe an einen AWS-Service dürfen die maximal zulässige API-Anforderungsrate pro Sekunde nicht überschreiten. Das Limit wird auf alle Ressourcen pro Konto und pro AWS-Region aufgeteilt.

Es spielt keine Rolle, ob Aufrufe von einer Anwendung, der AWS-Befehlszeilenschnittstelle (AWS CLI) oder der AWS-Managementkonsole stammen. Wenn API-Anfragen die maximale Rate pro Sekunde überschreiten, erhalten Sie die Fehlermeldung „Rate überschritten“, und API-Aufrufe werden dann gedrosselt. Einige API-Aufrufe können dutzende Male pro Sekunde ausgeführt werden, während andere auf einige erlaubte Aufrufe pro Sekunde beschränkt sind.

Hinweis: Wenn Sie beim Ausführen von AWS-CLI-Befehlen Fehler erhalten, stellen Sie sicher, dass Sie die neueste AWS-CLI-Version verwenden.

Sie können Fehler von API-Aufrufen erhalten, die direkt an Elastic Beanstalk gesendet werden, sowie von anderen AWS-Services, die von Elastic Beanstalk verwaltet werden, wie AWS CloudFormation, Amazon Elastic Compute Cloud (Amazon EC2), Auto Scaling und Load Balancing. Das Risiko von Drosselungen steigt, wenn die Nutzung des Kontos zunimmt oder wenn Sie demselben Konto weitere Ressourcen hinzufügen.

**Hinweis:**Das Limit der Anrufe kann je nach Tageszeit variieren, da sich unsere Dienste an die Auslastung anpassen. Es empfiehlt sich, die Geschwindigkeit, mit der Sie die API verwenden, dynamisch anzupassen, um sich an das dynamische Grenzwertverhalten anzupassen.

Behebung

Versuchen Sie, die Fehler „Rate Exceeded“ und die Drosselung zu verhindern oder zu beheben, indem Sie folgende Lösungen ausprobieren:

Finden Sie die Quelle hoher API-Aufrufe

1.Identifizieren Sie in Ihrem Elastic Beanstalk-Event-Stream den Drosselungsfehler. Notieren Sie sich den Zeitraum, in dem Sie den Fehler erhalten haben. Oder, wenn API-Aufrufe von einer Anwendung oder einem Skript kommen, suchen Sie in Ihren Anwendungsprotokollen nach dem Zeitrahmen.

2.Verwenden Sie AWS CloudTrailfür Anforderungen, die Sie in dem Zeitrahmen mit RequestLimitExceeded-Fehlern gefunden haben, um Ereignisse anzuzeigen und den eventName, eventSource (den Service) und userAgent zu überprüfen. Ordnen Sie den Zeitstempel des Fehlers in Elastic Beanstalk-Ereignissen oder in Ihren Protokollen den in CloudTrail gefundenen Fehlern zu. Auf diese Weise können Sie feststellen, welche Quelle in Ihrem Konto die meisten API-Aufrufe verbraucht.

Hinweis: Das manuelle Zählen von CloudTrail-Datensätzen kann schwierig sein. Sie können Athena-Abfragen auch über CloudTrail verwenden.

Amazon CloudWatch-Nutzungsmetriken können Ihnen helfen, Ihre API-Nutzung im Laufe der Zeit zu überwachen. Beachten Sie, dass derzeit nicht alle Dienste und API-Aufrufe in Nutzungsmetriken unterstützt werden.

Anwendungen von Drittanbietern können kontinuierlich Elastic Beanstalk oder andere von Elastic Beanstalk verwaltete AWS-Services aufrufen. Wenn Sie einer Drittanbieteranwendung das Recht gewähren, API-Aufrufe in Ihrem Konto durchzuführen, stellen Sie sicher, dass Sie diese ebenfalls überwachen.

Verwenden Sie bewährte Methoden, um die API-Nutzung zu reduzieren

Verwenden Sie Fehlerwiederholungen, exponentielle Backoffs und Jitter, um die Rate von API-Aufrufen zu begrenzen. Jedes AWS-SDK implementiert zwar automatische Wiederholungslogik und exponentielle Backoff-Algorithmen, aber Sie müssen möglicherweise die SDK-Konfigurationseinstellungen an Ihre Bedürfnisse anpassen, falls die standardmäßige Wiederholungslogik nicht ausreicht.

Hinweis: Die SDK-Einstellungen sind nur ein Teil, den es zu berücksichtigen gilt. Ihr eigener Code sollte beim Aufrufen des SDK auch die Backoff-, Wiederholungs- und Jitter-Logik verwenden.

Wenn Sie ein benutzerdefiniertes Skript haben, das jede Sekunde API-Aufrufe ausführt, überlegen Sie, ob dies erforderlich ist. Für fortgeschrittene Anwendungsfälle sollten Sie erwägen, eine Caching-Ebene zu erstellen, um den API-Verbrauch zu reduzieren. Sie können auch eine Strategie mit mehreren Konten in Betracht ziehen. Es ist eine bewährte Methode, zu verhindern, dass ein einzelnes AWS-Konto zu groß wird. Durch die Trennung von Entwicklungs- oder Testressourcen von Produktionsressourcen kann verhindert werden, dass Entwicklungsressourcen den Produktionsressourcen die API-Nutzung entziehen.

Beantragen Sie eine Erhöhung Ihres Limits für Ihre API-Anrufrate

Bei Bedarf können Sie eine Erhöhung des Limits für Ihre API-Aufrufrate beantragen. Diese Grenzwerte sind schwieriger zu erhöhen als typische ressourcenbasierte Grenzwerte und erfordern eine aussagekräftige Begründung anhand von Anwendungsfällen. Unsere Teams überprüfen Ihre APIs und stellen sicher, dass die bewährten Methoden eingehalten werden. Anfragen sollten rechtzeitig im Voraus gestellt werden, falls dies erforderlich ist.

Wenn Sie eine Erhöhung beantragen, geben Sie die folgenden Informationen an:

  • Ihre AWS-Region und den Zeitrahmen im Zusammenhang mit den Drosselungsproblemen
  • Der API-Aufruf, den Sie verwenden, und die Anrufrate, die Sie benötigen
  • Eine detaillierte Begründung für einen Anwendungsfall, z. B. die geschäftliche Notwendigkeit und die technische Notwendigkeit der Erhöhung

Versuchen Sie unbedingt, Fehlerwiederholungen, exponentielle Backoffs und Jitter zu verwenden, bevor Sie die Anfrage senden. Fügen Sie die Ergebnisse dieser Versuche sowie alle Informationen zu den Versuchen in die Anfrage ein.


Verwandte Informationen

Fehlerwiederholungen und exponentieller Backoff in AWS

Exponentieller Backoff und Jitter

Protokollieren von Elastic Beanstalk-API-Aufrufen mit AWS CloudTrail

CloudWatch-Nutzungsmetriken

Vorteile der Verwendung mehrerer AWS-Konten

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren