Warum skaliert meine Lambda-Funktion mit einer Amazon-SQS-Ereignisquelle nicht optimal?

Lesedauer: 4 Minute
0

Für meine Amazon Simple Queue Service (Amazon SQS)-Warteschlangenereignisquelle möchte ich, dass meine AWS-Lambda-Funktion eine optimale Parallelität aufweist.

Behebung

**Hinweis:**Wenn Sie eine Amazon-SQS-Warteschlange als Ereignisquelle konfigurieren, können Lambda-Funktionen optimal auf bis zu 300 weitere Instances pro Minute hochskalieren. Die maximale Anzahl gleichzeitiger Aufrufe beträgt 1.000 für Standardwarteschlangen. Wenn Sie die FIFO-Ereignisquellenzuordnung verwenden, können Funktionen parallel zur Anzahl der aktiven Nachrichtengruppen skaliert werden. Weitere Informationen finden Sie unter Skalierung und Verarbeitung.

Identifizieren und Beheben von Fehlern beim Aufrufen der Lambda-Funktion

Um Skalierungsfehler zu vermeiden, drosselt Lambda die Funktionsskalierung, wenn Aufruffehler auftreten. Wenn die Fehler behoben sind, skaliert Lambda die Funktion weiter. Weitere Informationen finden Sie unter Backoff-Strategie für fehlgeschlagene Aufrufe. Bewährte Methoden zum Beheben von Fehlern beim Aufrufen von Lambda-Funktionen finden Sie unter Problembehandlung in Lambda und Wie behebe ich Lambda-Funktionsfehler?

Konfigurieren Ihrer Lambda-Funktion mit optimaler Parallelität für Ihren Anwendungsfall

Reservierte Parallelität

Wenn Sie reservierte Parallelität für Ihre Funktion konfiguriert haben, drosselt Lambda Ihre Funktion, wenn die Funktion den reservierten Wert erreicht. Zuordnungen von Ereignisquellen berücksichtigen keine reservierte Parallelität und können mehr Nachrichten aus Ihrer Warteschlange verarbeiten, als an Ihre Funktion gesendet werden können.

Der Umfang der Parallelität, der für Ihre Funktion reserviert ist, muss die folgenden Mindestwerte haben:

  • Für standardmäßige Amazon-SQS-Warteschlangen: 1.000
  • Für FIFO-Warteschlangen: Die Anzahl der aktiven Nachrichtengruppen

Es ist keine bewährte Methode, die Anzahl der reservierten Parallelitäten unter der Anzahl der Nachrichtengruppen in der FIFO-Warteschlange zu halten. Eine geringere reservierte Parallelität kann zu Verzögerungen bei der Verarbeitung in der FIFO-Warteschlange führen und dazu führen, dass Ihre Funktion gedrosselt wird.

**Wichtig:**Um die Anzahl gleichzeitiger Aufrufe zu begrenzen, verwenden Sie die maximale Parallelitätseinstellung für Amazon-SQS-Ereignisquellen anstelle der reservierten Parallelität.

Uneingeschränkte Parallelität

Wenn Sie für Ihre Funktion keine reservierte Parallelität konfigurieren, hat Ihre Funktion ein Standardkontingent für nicht reservierte Parallelität von 1.000. Dieses Standardkontingent gilt für andere Funktionen in demselben AWS-Konto und derselben AWS-Region. Wenn in der Region Ihrer Funktion mindestens 1.000 nicht reservierte Parallelität verfügbar sind, skaliert die Funktion, bis die maximal verfügbare Parallelität erreicht ist. Wenn die gesamte Parallelität Ihres Kontos verwendet wird, drosselt Lambda die Aufrufe.

**Hinweis:**Lambda-Funktionen werden anfänglich auf der Grundlage der Parallelitätsskalierungsrate skaliert.

Um sich vor übermäßiger Skalierung aufgrund plötzlicher Datenverkehrsspitzen zu schützen, hat Lambda Einschränkungen hinsichtlich der Geschwindigkeit, mit der Ihre Funktionen skaliert werden können. Die Parallelitätsskalierungsrate definiert die Obergrenze dafür, wie schnell die Funktionen in Ihrem Konto als Reaktion auf erhöhte Anfragen zunehmen können.

**Wichtig:**Die Parallelitätsskalierungsrate ist ein Limit auf Funktionsebene. Jede Funktion in Ihrem Konto kann unabhängig von anderen Funktionen skaliert werden. Die Parallelitäts-Skalierungsrate unterscheidet sich auch vom Parallelitätslimit auf Kontoebene, das den Gesamtbetrag der Parallelität angibt, der Ihren Funktionen zur Verfügung steht.

Einstellung für maximale Parallelität

Die Einstellung für maximale Parallelität begrenzt die maximale Anzahl gleichzeitiger Ausführungen Ihrer Lambda-Funktion so, dass sie einen konfigurierten Wert nicht überschreitet. Wenn Sie die maximale Parallelität für eine Ereignisquelle festlegen, gilt dieser Wert nur für diese bestimmte Ereignisquelle. Alle weiteren Ereignisquellen ohne maximale Parallelität verwenden das verbleibende Parallelitätskontingent des Kontos oder die reservierte Parallelität.

Die maximale Parallelitätseinstellung und die reservierte Parallelität können zusammen verwendet werden. Es hat sich bewährt, die maximale Parallelitätseinstellung nicht höher als die reservierte Parallelität der Funktion festzulegen, da dies zu einer Drosselung führen kann.

Sicherstellen, dass Ihre Amazon-SQS-Warteschlange genügend Nachrichten enthält, damit Ihre Lambda-Funktion skaliert werden kann

Wenn eine Amazon-SQS-Warteschlange so konfiguriert ist, dass sie eine Lambda-Funktion aufruft, skaliert Lambda Aufrufe nur, wenn sich Nachrichten in der Warteschlange befinden.

Um zu überprüfen, wie viele Nachrichten in Ihrer Amazon-SQS-Warteschlange verarbeitet werden müssen, überprüfen Sie Ihre Metrik ApproximateNumberOfMessagesVisible.

Wenn die Metrik niedrig oder bei 0 ist, kann Ihre Funktion nicht skaliert werden.

Wenn die Metrik hoch ist und keine Aufruffehler vorliegen, erhöhen Sie die Batchgröße in Ihrer Ereignisbenachrichtigung. Erhöhen Sie die Batchgröße, bis die Dauermetrik schneller steigt als die Metrik für die Batchgröße. Weitere Informationen finden Sie unter Überwachungsfunktionen auf der Lambda-Konsole.

**Hinweis:**Die maximale Batchgröße für eine Amazon-SQS-Standardwarteschlange beträgt 10.000 Datensätze. Für FIFO-Warteschlangen beträgt die maximale Batchgröße 10 Datensätze. Weitere Informationen finden Sie unter ReceiveMessage.

Ähnliche Informationen

Verwendung von Lambda mit Amazon SQS

Verwaltung der Parallelität von AWS-Lambda-Funktionen

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Monat