Überwachen der Gleichzeitigkeit - AWS Lambda

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.

Überwachen der Gleichzeitigkeit

Lambda gibt CloudWatch Amazon-Metriken aus, um Sie bei der Überwachung der Parallelität Ihrer Funktionen zu unterstützen. In diesem Thema werden diese Metriken und ihre Interpretation erläutert.

Allgemeine Metriken für Gleichzeitigkeit

Verwenden Sie die folgenden Metriken, um die Gleichzeitigkeit Ihrer Lambda-Funktionen zu überwachen. Die Granularität für jede Metrik ist 1 Minute.

  • ConcurrentExecutions – Die Anzahl der aktiven gleichzeitigen Aufrufe zu einem bestimmten Zeitpunkt. Lambda gibt diese Metrik für alle Funktionen, Versionen und Aliasse aus. Für jede Funktion in der Lambda-Konsole zeigt Lambda das Diagramm für ConcurrentExecutions nativ auf der Registerkarte Überwachung unter Metriken an. Sehen Sie sich diese Metrik an mit. MAX

  • UnreservedConcurrentExecutions – Die Anzahl der aktiven gleichzeitigen Aufrufe, die nicht reservierte Gleichzeitigkeit verwenden. Lambda gibt diese Metriken for alle Funktionen in einer Region aus. Diese Metrik anzeigen mit MAX.

  • ClaimedAccountConcurrency – Die Menge an Gleichzeitigkeit, die für On-Demand-Aufrufe nicht verfügbar ist. ClaimedAccountConcurrency entspricht UnreservedConcurrentExecutions plus dem Betrag der zugewiesenen Gleichzeitigkeit (d. h. der gesamten reservierten Gleichzeitigkeit plus der gesamten bereitgestellten Gleichzeitigkeit). Wenn das Kontogleichzeitigkeitslimit für ClaimedAccountConcurrency überschritten wird, können Sie ein höheres Kontogleichzeitigkeitslimit beantragen. Diese Metrik anzeigen mit MAX. Weitere Informationen finden Sie unter Die Metrik ClaimedAccountConcurrency.

Metriken für Provisioned Concurrency

Verwenden Sie die folgenden Metriken, um Lambda-Funktionen mit bereitgestellter Gleichzeitigkeit zu überwachen. Die Granularität für jede Metrik ist 1 Minute.

  • ProvisionedConcurrentExecutions – Die Anzahl der Instances der Ausführungsumgebung, die einen Aufruf bei bereitgestellter Gleichzeitigkeit aktiv verarbeiten. Lambda gibt diese Metrik für jede Funktionsversion und jeden Alias aus, wobei die bereitgestellte Gleichzeitigkeit konfiguriert ist. Diese Metrik anzeigen mit MAX.

ProvisionedConcurrentExecutions entspricht nicht der Gesamtzahl der bereitgestellten Gleichzeitigkeit, die Sie zuweisen. Nehmen wir zum Beispiel an, Sie weisen einer Funktionsversion 100 Einheiten der bereitgestellten Gleichzeitigkeit zu. Wenn in einer bestimmten Minute höchstens 50 dieser 100 Ausführungsumgebungen Aufrufe gleichzeitig verarbeitet haben, dann ist der Wert von MAX(ProvisionedConcurrentExecutions) 50.

  • ProvisionedConcurrencyInvocations – Die Häufigkeit, mit der Lambda Ihren Funktionscode mit bereitgestellter Gleichzeitigkeit aufruft. Lambda gibt diese Metrik für jede Funktionsversion und jeden Alias aus, wobei die bereitgestellte Gleichzeitigkeit konfiguriert ist. Sehen Sie sich diese Metrik an mit. SUM

ProvisionedConcurrencyInvocations unterscheidet sich von ProvisionedConcurrentExecutions dadurch, dass ProvisionedConcurrencyInvocations die Gesamtzahl der Aufrufe zählt, während ProvisionedConcurrentExecutions die Anzahl der aktiven Umgebungen zählt. Um diesen Unterschied zu verstehen, betrachten Sie das folgende Szenario:

Vergleich von ProvisionedConcurrencyInvocations und ProvisionedConcurrentExecutions.

In diesem Beispiel nehmen wir an, dass Sie 1 Aufruf pro Minute erhalten und jeder Aufruf 2 Minuten dauert. Jeder orangefarbene horizontale Balken steht für eine einzelne Anfrage. Nehmen wir an, dass Sie dieser Funktion 10 Einheiten der bereitgestellten Gleichzeitigkeit zuweisen, sodass jede Anforderung mit bereitgestellter Gleichzeitigkeit ausgeführt wird.

Zwischen den Minuten 0 und 1 trifft Request 1 ein. In Minute 1 ist der Wert für MAX(ProvisionedConcurrentExecutions) 1, da in der letzten Minute höchstens eine Ausführungsumgebung aktiv war. Der Wert für SUM(ProvisionedConcurrencyInvocations) ist ebenfalls 1, da in der letzten Minute eine neue Anfrage eingegangen ist.

Zwischen den Minuten 1 und 2 trifft Request 2 ein, während Request 1 weiterläuft. In Minute 2 ist der Wert für MAX(ProvisionedConcurrentExecutions) 2, da in der letzten Minute höchstens 2 Ausführungsumgebungen aktiv waren. Der Wert für SUM(ProvisionedConcurrencyInvocations) ist jedoch 1, da in der letzten Minute nur eine neue Anfrage eingegangen ist. Dieses Verhalten der Metrik setzt sich bis zum Ende des Beispiels fort.

  • ProvisionedConcurrencySpilloverInvocations – Die Häufigkeit, mit der Lambda Ihre Funktion bei standardmäßiger (reservierter oder nicht reservierter) Gleichzeitigkeit aufruft, wenn die gesamte bereitgestellte Gleichzeitigkeit verwendet wird. Lambda gibt diese Metrik für jede Funktionsversion und jeden Alias aus, wobei die bereitgestellte Gleichzeitigkeit konfiguriert ist. Sehen Sie sich diese Metrik an mit SUM. Der Wert von ProvisionedConcurrencyInvocations + ProvisionedConcurrencySpilloverInvocations sollte der Gesamtzahl der Funktionsaufrufe (d. h. der Invocations-Metrik) entsprechen.

    ProvisionedConcurrencyUtilization – Der prozentuale Anteil der bereitgestellten Gleichzeitigkeit, der genutzt wird (d. h. der Wert von ProvisionedConcurrentExecutions geteilt durch die Gesamtmenge der bereitgestellten Gleichzeitigkeit). Lambda gibt diese Metrik für jede Funktionsversion und jeden Alias aus, wobei die bereitgestellte Gleichzeitigkeit konfiguriert ist. Diese Metrik anzeigen mit MAX.

Nehmen wir zum Beispiel an, Sie teilen einer Funktionsversion 100 Einheiten der bereitgestellten Gleichzeitigkeit zu. Wenn in einer bestimmten Minute maximal 60 dieser 100 Ausführungsumgebungen Aufrufe gleichzeitig verarbeitet haben, dann ist der Wert von MAX(ProvisionedConcurrentExecutions) 60 und der Wert von MAX(ProvisionedConcurrencyUtilization) ist 0,6.

Ein hoher Wert für ProvisionedConcurrencySpilloverInvocations kann darauf hinweisen, dass Sie zusätzliche bereitgestellte Gleichzeitigkeit für Ihre Funktion zuteilen müssen. Alternativ können Sie Application Auto Scaling konfigurieren, um die automatische Skalierung der bereitgestellten Gleichzeitigkeit auf der Grundlage von vordefinierten Schwellenwerten zu steuern.

Umgekehrt können konstant niedrige Werte für ProvisionedConcurrencyUtilization darauf hindeuten, dass Sie Ihrer Funktion zu viel bereitgestellte Gleichzeitigkeit zugeteilt haben.

Die Metrik ClaimedAccountConcurrency

Lambda verwendet die Metrik ClaimedAccountConcurrency, um zu ermitteln, wie viel Gleichzeitigkeit in Ihrem Konto für On-Demand-Aufrufe verfügbar ist. Lambda berechnet ClaimedAccountConcurrency mit der folgenden Formel:

ClaimedAccountConcurrency = UnreservedConcurrentExecutions + (allocated concurrency)

UnreservedConcurrentExecutions ist die Anzahl der aktiven gleichzeitigen Aufrufe, die nicht reservierte Gleichzeitigkeit verwenden. Die zugewiesene Gleichzeitigkeit ist die Summe der folgenden beiden Teile (wobei RC für „reservierte Gleichzeitigkeit“ und PC für „bereitgestellte Gleichzeitigkeit“ steht):

  • Die gesamte RC aller Funktionen in einer Region.

  • Die gesamte PC aller Funktionen in einer Region, die PC verwenden, ohne Funktionen, die RC verwenden.

Anmerkung

Sie können einer Funktion nicht mehr PC als RC zuweisen. Somit ist die RC einer Funktion immer größer oder gleich der PC. Um den Beitrag zur zugewiesenen Gleichzeitigkeit für solche Funktionen mit PC und RC zu berechnen, berücksichtigt Lambda nur RC, welches das Maximum der beiden ist.

Lambda verwendet die Metrik ClaimedAccountConcurrency anstelle von ConcurrentExecutions, um zu ermitteln, wie viel Gleichzeitigkeit für On-Demand-Aufrufe verfügbar ist. Die Metrik ConcurrentExecutions ist zwar nützlich, um die Anzahl der aktiven gleichzeitigen Aufrufe nachzuverfolgen, spiegelt jedoch nicht immer die tatsächliche Verfügbarkeit von Gleichzeitigkeit wider. Das liegt daran, dass Lambda bei der Bestimmung der Verfügbarkeit auch die reservierte und die bereitgestellte Gleichzeitigkeit berücksichtigt.

Stellen Sie sich zur Veranschaulichung von ClaimedAccountConcurrency ein Szenario vor, in dem Sie sehr viel reservierte und bereitgestellte Gleichzeitigkeit für Ihre Funktionen konfigurieren, die weitgehend ungenutzt bleiben. Gehen Sie im folgenden Beispiel nun davon aus, dass Ihr Kontogleichzeitigkeitslimit 1 000 beträgt und dass Ihr Konto über zwei Hauptfunktionen verfügt: function-orange und function-blue. Sie weisen function-orange 600 reservierte Gleichzeitigkeitseinheiten zu. Sie weisen function-blue 200 bereitgestellte Gleichzeitigkeitseinheiten zu. Nehmen wir an, dass Sie im Laufe der Zeit zusätzliche Funktionen bereitstellen und das folgende Datenverkehrsmuster beobachten:

Ein Diagramm, das zeigt, wie Lambda ermittelt ClaimedAccountConcurrency.

Im vorherigen Diagramm stehen die schwarzen Linien für die tatsächliche Nutzung der Gleichzeitigkeit im Zeitverlauf, und die rote Linie für den Wert ClaimedAccountConcurrency im Zeitverlauf. In diesem Szenario beträgt der Wert von ClaimedAccountConcurrency mindestens 800, obwohl die tatsächliche Gleichzeitigkeitsauslastung aller Funktionen gering ist. Das liegt daran, dass Sie insgesamt 800 Gleichzeitigkeitseinheiten für function-orange und function-blue zugewiesen haben. Aus Sicht von Lambda haben Sie diese Gleichzeitigkeit zur Nutzung „beansprucht“, sodass Ihnen praktisch nur noch 200 Gleichzeitigkeitseinheiten für andere Funktionen zur Verfügung stehen.

Für dieses Szenario beträgt die zugewiesene Gleichzeitigkeit in der ClaimedAccountConcurrency-Formel 800. Daraus können wir den Wert von ClaimedAccountConcurrency an verschiedenen Stellen im Diagramm ableiten:

  • Bei t1, ClaimedAccountConcurrency ist der Wert 800 (800 + 0 UnreservedConcurrentExecutions).

  • Bei t2, ClaimedAccountConcurrency ist der Wert 900 (800 + 100 UnreservedConcurrentExecutions).

  • Bei t3, ClaimedAccountConcurrency ist der Wert wieder 900 (800 + 100 UnreservedConcurrentExecutions).

Einrichtung der ClaimedAccountConcurrency Metrik in CloudWatch

Lambda gibt die ClaimedAccountConcurrency Metrik in aus. CloudWatch Verwenden Sie diese Metrik zusammen mit dem Wert von SERVICE_QUOTA(ConcurrentExecutions), um die prozentuale Nutzung der Gleichzeitigkeit in Ihrem Konto zu ermitteln, wie in der folgenden Formel dargestellt:

Utilization = (ClaimedAccountConcurrency/SERVICE_QUOTA(ConcurrentExecutions)) * 100%

Der folgende Screenshot zeigt, wie Sie diese Formel grafisch darstellen können. CloudWatch Die grüne claim_utilization-Linie steht für die Gleichzeitigkeitsauslastung in diesem Konto, die bei etwa 40 % liegt:

Ein Screenshot zeigt, wie Sie die ClaimedAccountConcurrency Metrik in verwenden können CloudWatch.

Der vorherige Screenshot enthält auch einen CloudWatch Alarm, der in den ALARM Status wechselt, wenn die Parallelitätsauslastung 70% übersteigt. Sie können die ClaimedAccountConcurrency-Metrik zusammen mit ähnlichen Alarmen verwenden, um proaktiv zu bestimmen, wann Sie möglicherweise ein höheres Kontengleichzeitigkeitslimit beantragen müssen.