2016-07-06 5 views
2

Von dem AWS Lambda FAQ:AWS Lambda Throughput

Q: Gibt es eine Begrenzung für die Anzahl von AWS Lambda-Funktionen I auf einmal ausführen kann?

Nein. AWS Lambda wurde entwickelt, um viele Instanzen Ihrer Funktionen unter parallel auszuführen. AWS Lambda verfügt jedoch über eine Standardsicherheitsdrossel von 100 gleichzeitige Ausführungen pro Konto pro Region. Wenn Sie eine Anfrage senden möchten, um die Drosselung von 100 gleichzeitigen Ausführungen zu erhöhen, können Sie unser Support Center besuchen, klicken Sie auf "einen neuen Fall öffnen" und einen Dienst Limit Erhöhung Anfrage.

F: Was passiert, wenn mein Konto die standardmäßige Gasgrenze von bei gleichzeitiger Ausführung überschreitet?

Bei Überschreiten der Drosselgrenze werden AWS Lambda-Funktionen, die aufgerufen werden, synchron einen Drosselungsfehler (429 Fehlercode) zurückgeben. Lambda Funktionen, die asynchron aufgerufen werden, können vernünftige Bursts von Verkehr für ungefähr 15-30 Minuten absorbieren, nach denen eingehende Ereignisse als gedrosselt zurückgewiesen werden. Wenn die Lambda-Funktion als Reaktion auf Amazon S3-Ereignisse aufgerufen wird, können Ereignisse, die von AWS Lambda abgelehnt wurden, von S3 für 24 Stunden beibehalten und wiederholt werden. Ereignisse von Amazon Kinesis-Streams und Amazon DynamoDB-Streams werden wiederholt, bis die Lambda-Funktion erfolgreich ist oder die Daten ablaufen. Amazon Kinesis und Amazon DynamoDB-Streams behalten Daten für 24 Stunden bei.

Was macht "vernünftige Bursts" oben aus? Hat jemand bestimmte Nummern?

+2

Dies scheint eine Frage für AWS-Unterstützung. –

+3

Relevanter Thread in AWS-Foren - https://forums.aws.amazon.com/thread.jspa?threadID=215173 – jbird

+0

Wenn Sie die Kapazitätsplanung durchführen, würde ich empfehlen, dass Sie keine "vernünftigen Ausbrüche" berücksichtigen - das ist es nicht garantiert. Ich würde Limit-Steigerungen verlangen, die die erwartete Kapazität mit etwas Spielraum bewältigen können. –

Antwort

0

Jede Art von Bursting in AWS sollte nie wirklich für die Produktion verwendet werden, dies ist anders als bei CPU-Gutschriften, wo es eine quantifizierbare Zuteilungs- und Wiederaufladungsrate gibt.

Im Wesentlichen ist es wie die Polsterung an den Rändern eines Trampolins, wo, wenn Sie es Ihnen helfen, fallen passieren, aber Sie haben noch nicht gehen Tauchen auf es nur zum Spaß :)

Ich würde interpretieren dies als Wenn die verfügbare Ressource vorhanden ist, kann AWS Sie verwenden, ohne sich darauf zu verlassen.

Mein Vorschlag ist eine höhere Ressourcenzuweisung für Ihre Lambda-Funktion auszuwählen, die für Ihre Arbeitslast besser geeignet ist, oder Ihre Arbeitslast für mehrere Lambdas in kleinere Blöcke aufzuteilen oder Ihre Arbeitslast auf EC2 zu verschieben.

+0

Wenn Sie die Anwendung so definieren können, dass Lambda-Funktionen in einem Round-Robin über Zonen hinweg aufgerufen werden, erhalten Sie n * 100 Concurrency, ohne auch nur um eine Limit-Erhöhung zu bitten. –

0

Lambda verwaltet einen internen Warteschlangenmechanismus, und wenn Sie Anfragen mehr als Ihr Limit senden (Standard 100), dann drosselt es Ihre Lambda-Aufrufe und wartet auf die ersten 100 Lambda-Funktionen und kehrt dann zur verfügbaren Liste zurück rufe sie für die nächste Anfrage aus der Warteschlange an.

So gibt es keinen definierten Wert von sinnvollen Bursts. Es hängt davon ab, wie schnell jeder Lambda seinen Job beendet. Wenn Sie mehr als 1000 Anfragen/Sek. Haben und jedes Lambda weniger als 10 Sek. Benötigt, kann es gut damit umgehen, aber wenn jede Lambda-Ausführung mehr als 120 Sek. Benötigt, kann es für einige Zeit gedrosselt werden, aber wenn seine Warteschlange voll ist Dann wird die neue Anfrage abgelehnt.

1

Haben keine spezifischen harten Zahlen, aber von der täglichen Praxis haben wir mehr als 1000 λ-Aufrufe zu einem Zeitpunkt erreicht.

Wir haben ein Invoker-Lambda, das über Kinesis-Streams ausgelöst wird, das Invoker-Lambda ruft einen Stapel von 10 Datensätzen aus dem Stream ab und ruft ein Worker-Lambda pro Datensatz auf. Je nachdem, wie schnell Sie bekommen Datensätze in Kinesis wird es LOSE Arbeiter lambdas auslösen:

Worker invokation count

Es kann auslösen ~ 5000 an einer beliebigen Stelle (und Sustain es für eine Weile), solange wir drängen Ereignisse halten in Kinesis.

Der gleiche Lambda kann auch über das API-Gateway aufgerufen werden. Ich würde denken, dass es auch die gleiche Art von Leistung behandeln könnte, wenn es nicht gesetzt auf dem API-Gateway gibt. Das Lambda selbst ist das gleiche.

Beachten Sie, dass wir invoking die Arbeiter sind, ist die Dispatcher-Funktion derjenige, der von Kinesis ausgelöst wird.