Probleme mit der Drosselung von Amazon ECS beheben - Amazon Elastic Container Service

Probleme mit der Drosselung von Amazon ECS beheben

Drosselungsfehler lassen sich in zwei Hauptkategorien einteilen: synchrone Drosselung und asynchrone Drosselung.

Synchrone Drosselung

Wenn synchrone Drosselung auftritt, erhalten Sie sofort eine Fehlerantwort von Amazon ECS. Diese Kategorie tritt normalerweise auf, wenn Sie Amazon-ECS-APIs aufrufen, während Sie Aufgaben ausführen oder Services erstellen. Weitere Informationen zu der damit verbundenen Drosselung und den entsprechenden Drosselungslimits finden Sie unter Anforderung der Drosselung für die Amazon-ECS-API.

Wenn Ihre Anwendung API-Anfragen initiiert, beispielsweise mithilfe der AWS CLI oder eines AWS-SDK, können Sie die API-Drosselung beheben. Sie können dies tun, indem Sie entweder Ihre Anwendung so gestalten, dass sie die Fehler behandelt, oder indem Sie eine exponentielle Backoff- und Jitter-Strategie mit Wiederholungslogik für die API-Aufrufe implementieren. Weitere Informationen finden Sie unter Timeouts, Wiederholungen und Backoff mit Jitter.

Wenn Sie ein AWS-SDK verwenden, ist die automatische Wiederholungslogik integriert und konfigurierbar.

Asynchrone Drosselung

Asynchrone Drosselung ist auf asynchrone Workflows zurückzuführen, bei denen Amazon ECS oder CloudFormation möglicherweise in Ihrem Namen APIs aufrufen, um Ressourcen bereitzustellen. Es ist wichtig zu wissen, welche AWS-APIs Amazon ECS in Ihrem Namen aufruft. Die CreateNetworkInterface-API wird beispielsweise für Aufgaben aufgerufen, die den awsvpc-Netzwerkmodus verwenden, und die DescribeTargetHealth-API wird aufgerufen, wenn Zustandsprüfungen für Aufgaben durchgeführt werden, die bei einem Load Balancer registriert sind.

Wenn Ihre Workloads ein beträchtliches Ausmaß erreichen, werden diese API-Vorgänge möglicherweise gedrosselt. Das heißt, sie werden möglicherweise so stark gedrosselt, dass sie die von Amazon ECS oder dem AWS-Service aufgerufenen System durchgesetzten Limits überschreiten. Wenn Sie beispielsweise Hunderte von Services bereitstellen, die jeweils Hunderte von Aufgaben gleichzeitig ausführen und den awsvpc-Netzwerkmodus verwenden, ruft Amazon ECS Amazon-EC2-API-Vorgänge wie CreateNetworkInterface und Elastic-Load-Balancing-API-Vorgänge wie RegisterTarget oder DescribeTargetHealth auf, um die Elastic-Network-Schnittstelle bzw. den Load Balancer zu registrieren. Diese API-Aufrufe können die API-Limits überschreiten, was zu Drosselungsfehlern führen kann. Im Folgenden finden Sie ein Beispiel für einen Drosselungsfehler bei Elastic Load Balancing, der in der Service-Ereignismeldung enthalten ist.

{ "userIdentity":{ "arn":"arn:aws:sts::111122223333:assumed-role/AWSServiceRoleForECS/ecs-service-scheduler", "eventTime":"2022-03-21T08:11:24Z", "eventSource":"elasticloadbalancing.amazonaws.com", "eventName":" DescribeTargetHealth ", "awsRegion":"us-east-1", "sourceIPAddress":"ecs.amazonaws.com", "userAgent":"ecs.amazonaws.com", "errorCode":"ThrottlingException", "errorMessage":"Rate exceeded", "eventID":"0aeb38fc-229b-4912-8b0d-2e8315193e9c" } }

Wenn diese API-Aufrufe dieselben Limits wie anderer API-Datenverkehr in Ihrem Konto haben, kann es schwierig sein, sie zu überwachen, obwohl sie als Service-Ereignisse ausgegeben werden.

Drosselung der Überwachung

Es ist wichtig zu ermitteln, welche API-Anfragen gedrosselt werden und von wo diese Anfragen ausgehen. Sie können AWS CloudTrail verwenden, das die Drosselung überwacht und sich in CloudWatch, Amazon Athena und Amazon EventBridge integrieren lässt. Sie können CloutTrail für das Senden von bestimmten Ereignissen an CloudWatch Logs konfigurieren. CloudWatch Logs protokolliert Erkenntnisse und zergliedert und analysiert die Ereignisse. Dadurch werden Details in Drosselungsereignissen identifiziert, z. B. der Benutzer oder die IAM-Rolle, die den Anruf getätigt hat, und die Anzahl der getätigten API-Aufrufe. Weitere Informationen finden Sie unter Überwachen von CloudTrail-Protokolldateien mit CloudWatch Logs.

Weitere Informationen zu Erkenntnissen aus CloudWatch Logs sowie Anweisungen zum Abfragen von Protokolldateien finden Sie unter Analysieren von Protokolldaten mit CloudWatch Logs Insights.

Mit Amazon Athena können Sie Abfragen erstellen und Daten mit Standard-SQL analysieren. Sie können beispielsweise eine Athena-Tabelle erstellen, um CloudTrail-Ereignisse zu analysieren. Weitere Informationen finden Sie unter Verwenden der CloudTrail-Konsole zum Erstellen einer Athena-Tabelle für CloudTrail-Protokolle.

Nachdem Sie eine Athena-Tabelle erstellt haben, können Sie SQL-Abfragen wie die folgende verwenden, um ThrottlingException-Fehler zu untersuchen.

Ersetzen Sie user-input durch Ihre eigenen Werte.

select eventname, errorcode,eventsource,awsregion, useragent,COUNT(*) count FROM cloudtrail_table-name where errorcode = 'ThrottlingException' AND eventtime between '2024-09-24T00:00:08Z' and '2024-09-23T23:15:08Z' group by errorcode, awsregion, eventsource, useragent, eventname order by count desc;

Amazon ECS sendet außerdem Ereignisbenachrichtigungen an Amazon EventBridge. Es gibt Ereignisse zur Änderung des Ressourcenstatus und Ereignisse bei Serviceaktionen. Dazu gehören API-Drosselungsereignisse wie ECS_OPERATION_THROTTLED und SERVICE_DISCOVERY_OPERATION_THROTTLED. Weitere Informationen finden Sie unter Amazon-ECS-Serviceaktionsereignisse.

Diese Ereignisse können von einem Service wie AWS Lambda verbraucht werden, um als Reaktion Aktionen auszuführen. Weitere Informationen finden Sie unter Verarbeitung von Amazon-ECS-Ereignissen.

Wenn Sie eigenständige Aufgaben ausführen, sind einige API-Operationen asynchron, z. B. RunTask, und Wiederholungsvorgänge werden nicht automatisch ausgeführt. In solchen Fällen können Sie Services wie die Integration von AWS Step Functions in EventBridge verwenden, um gedrosselte oder fehlgeschlagene Vorgänge erneut zu versuchen. Weitere Informationen finden Sie unter Container-Aufgaben verwalten (Amazon ECS, Amazon SNS).

CloudWatch verwenden, um die Drosselung zu überwachen

CloudWatch bietet Überwachung der API-Nutzung im Usage-Namespace unter Nach AWS-Ressource. Diese Metriken werden mit dem Typ API und dem Metriknamen CallCount protokolliert. Sie können Alarme erstellen, die immer dann ausgelöst werden, wenn diese Metriken einen bestimmten Schwellenwert erreichen. Weitere Informationen finden Sie unter Visualisierung Ihrer Service Quotas und Einstellung von Alarmen.

CloudWatch bietet auch eine Anomalieerkennung. Dieses Feature verwendet Machine Learning, um Basiswerte zu analysieren und festzulegen, die auf dem spezifischen Verhalten der Metrik basieren, für die Sie es aktiviert haben. Bei ungewöhnlichen API-Aktivitäten können Sie dieses Feature zusammen mit CloudWatch-Alarmen verwenden. Weitere Informationen finden Sie unter Verwenden der CloudWatch-Anomalieerkennung.

Indem Sie proaktive Drosselungsfehler überwachen, können Sie sich rechtzeitig an den Support wenden, um die entsprechenden Drosselungslimits zu erhöhen und Unterstützung für Ihre individuellen Anwendungsanforderungen zu erhalten.