View a markdown version of this page

Ü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 Lambda-Ereignisfunktionen 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 Parallelität Ihrer Lambda-Ereignisfunktionen 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 Eventfunktionen, Versionen und Aliase aus. Für jede Event-Funktion in der Lambda-Konsole zeigt Lambda das Diagramm ConcurrentExecutions nativ auf der Registerkarte Überwachung unter Metriken an. Sehen Sie sich diese Metrik mit MAX an.

  • UnreservedConcurrentExecutions – Die Anzahl der aktiven gleichzeitigen Aufrufe, die nicht reservierte Gleichzeitigkeit verwenden. Lambda gibt diese Metrik für alle Event-Funktionen in einer Region aus. Sehen Sie sich diese Metrik mit MAX an.

  • 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.

    Sehen Sie sich diese Metrik mit MAX an. Weitere Informationen finden Sie unter Die Metrik ClaimedAccountConcurrency.

Metriken für Provisioned Concurrency

Verwenden Sie die folgenden Metriken, um Lambda-Ereignisfunktionen mithilfe der bereitgestellten Parallelität 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 Version und jeden Alias der Event Function mit konfigurierter bereitgestellter Parallelität aus. Sehen Sie sich diese Metrik mit MAX an.

ProvisionedConcurrentExecutions entspricht nicht der Gesamtzahl der bereitgestellten Gleichzeitigkeit, die Sie zuweisen. Nehmen wir beispielsweise an, Sie weisen einer Version von Event Function 100 Einheiten bereitgestellter Parallelität zu. Wenn in einer bestimmten Minute höchstens 50 dieser 100 Ausführungsumgebungen gleichzeitig Aufrufe verarbeiten, dann ist der Wert von MAX(ProvisionedConcurrentExecutions) 50.

  • ProvisionedConcurrencyInvocations— Die Häufigkeit, mit der Lambda Ihren Event-Funktionscode mithilfe der bereitgestellten Parallelität aufruft. Lambda gibt diese Metrik für jede Version und jeden Alias der Event Function mit konfigurierter bereitgestellter Parallelität aus. Sehen Sie sich diese Metrik mit SUM an.

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 und. ProvisionedConcurrencyInvocations 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, Sie weisen dieser Ereignisfunktion 10 bereitgestellte Parallelitätseinheiten zu, sodass jede Anforderung mit bereitgestellter Parallelität ausgeführt wird.

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

Zwischen den Minuten 1 und 2 trifft Request 2 ein, während Request 1 weiterläuft. Bei 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 1 neue Anforderung eingegangen ist. Dieses Verhalten der Metrik setzt sich bis zum Ende des Beispiels fort.

  • ProvisionedConcurrencySpilloverInvocations— Die Häufigkeit, mit der Lambda Ihre Event-Funktion bei standardmäßiger (reservierter oder nicht reservierter) Parallelität aufruft, wenn die gesamte bereitgestellte Parallelität verwendet wird. Lambda gibt diese Metrik für jede Version und jeden Alias der Event Function mit konfigurierter bereitgestellter Parallelität aus. Sehen Sie sich diese Metrik mit SUM an. Der Wert von ProvisionedConcurrencyInvocations + ProvisionedConcurrencySpilloverInvocations sollte der Gesamtzahl der Aufrufe der Event-Funktion (d. h. der Metrik) entsprechen. Invocations

    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 Version und jeden Alias der Event Function mit konfigurierter bereitgestellter Parallelität aus. Sehen Sie sich diese Metrik mit MAX an.

Nehmen wir beispielsweise an, Sie stellen 100 Einheiten bereitgestellter Parallelität für eine Event Function-Version bereit. Wenn in einer bestimmten Minute höchstens 60 dieser 100 Ausführungsumgebungen gleichzeitig Aufrufe verarbeiten, dann ist der Wert von MAX(ProvisionedConcurrentExecutions) 60 und der Wert von MAX(ProvisionedConcurrencyUtilization) ist 0,6.

Ein hoher Wert für ProvisionedConcurrencySpilloverInvocations könnte bedeuten, dass Sie Ihrer Event Function zusätzliche bereitgestellte Parallelität zuweisen 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 ProvisionedConcurrencyUtilization könnten konstant niedrige Werte für darauf hindeuten, dass Sie Ihrer Event-Funktion zu viel bereitgestellte Parallelität zugewiesen 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 Summe aller Event-Funktionen RC in einer Region.

  • Die Summe PC aller Ereignisfunktionen in einer Region, die verwendenPC, mit Ausnahme von Ereignisfunktionen, die verwendenRC.

Anmerkung

Sie können nicht mehr PC als RC einer Ereignisfunktion zuweisen. Daher RC ist der Wert einer Ereignisfunktion immer größer oder gleich seinerPC. Um den Beitrag zur zugewiesenen Parallelität für solche Event-Funktionen PC sowohl mit als auch zu berechnenRC, berücksichtigt Lambda nurRC, 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 ein Szenario vorClaimedAccountConcurrency, in dem Sie viele reservierte Parallelität und bereitgestellte Parallelität für Ihre Eventfunktionen konfigurieren, die weitgehend ungenutzt bleiben. Gehen Sie im folgenden Beispiel davon aus, dass Ihr Konto-Parallelitätslimit 1.000 beträgt und dass Ihr Konto über zwei Hauptereignisfunktionen verfügt: und. function-orange 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 Event-Funktionen bereitstellen und dabei 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 ClaimedAccountConcurrency sind es mindestens 800, obwohl die tatsächliche Parallelitätsauslastung Ihrer Event-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 Parallelität für die Nutzung „beansprucht“, sodass Ihnen effektiv nur noch 200 Parallelitätseinheiten für andere Event-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 Metrik in ClaimedAccountConcurrency 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:

Verwendung der ClaimedAccountConcurrency Metrik in 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.