Verbesserung der Startleistung mit Lambda SnapStart - 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.

Verbesserung der Startleistung mit Lambda SnapStart

Lambda SnapStart für Java kann die Startleistung latenzempfindlicher Anwendungen ohne zusätzliche Kosten um das bis zu 10-fache verbessern, in der Regel ohne Änderungen an Ihrem Funktionscode. Der größte Beitrag zur Startup-Latenz (oft als Kaltstartzeit bezeichnet) ist die Zeit, die Lambda für die Initialisierung der Funktion aufwendet. Dazu gehören das Laden des Funktionscodes, der Start der Laufzeit und die Initialisierung des Funktionscodes.

Mit initialisiert Lambda Ihre Funktion SnapStart, wenn Sie eine Funktionsversion veröffentlichen. Lambda erstellt einen Firecracker-microVM-Snapshot des Arbeitsspeichers und des Festplattenstatus der initialisierten Ausführungsumgebung, verschlüsselt den Snapshot und speichert ihn im Cache für den Zugriff mit geringer Latenz. Wenn Sie die Funktionsversion zum ersten Mal aufrufen und wenn die Aufrufe hochskalieren, nimmt Lambda neue Ausführungsumgebungen aus dem im Cache gespeicherten Snapshot wieder auf, anstatt sie von Grund auf neu zu initialisieren, wodurch die Startup-Latenz verbessert wird.

Wichtig

Wenn Ihre Anwendungen von der Eindeutigkeit des Zustands abhängen, müssen Sie Ihren Funktionscode auswerten und sicherstellen, dass er gegenüber Snapshot-Vorgängen widerstandsfähig ist. Weitere Informationen finden Sie unter Umgang mit Einzigartigkeit mit Lambda SnapStart.

Unterstützte Funktionen und Einschränkungen

SnapStart unterstützt Java 11 und neuere Java-verwaltete Laufzeiten. Andere verwaltete Laufzeiten (wie nodejs20.x und python3.12), Reine OS-Laufzeiten und Container-Images werden nicht unterstützt.

SnapStart unterstützt keine bereitgestellte Parallelität, Amazon Elastic File System (AmazonEFS) oder kurzlebigen Speicher mit mehr als 512 MB.

Um damit zu arbeiten SnapStart, können Sie die Lambda-Konsole, die AWS Command Line Interface (AWS CLI), die LambdaAPI, die, AWS SDK for Java AWS CloudFormation, AWS Serverless Application Model (AWS SAM) und verwenden. AWS Cloud Development Kit (AWS CDK) Weitere Informationen finden Sie unter Lambda aktivieren und verwalten SnapStart.

Anmerkung

Sie können sie SnapStart nur für veröffentlichte Funktionsversionen und Aliase verwenden, die auf Versionen verweisen. Sie können es nicht für SnapStart die unveröffentlichte Version einer Funktion ($LATEST) verwenden.

Unterstützte Regionen

SnapStart ist in den folgenden AWS-Regionen Versionen verfügbar:

  • USA Ost (Nord-Virginia)

  • USA Ost (Ohio)

  • USA West (Nordkalifornien)

  • USA West (Oregon)

  • Africa (Cape Town)

  • Asia Pacific (Hong Kong)

  • Asien-Pazifik (Mumbai)

  • Asien-Pazifik (Hyderabad)

  • Asien-Pazifik (Tokio)

  • Asien-Pazifik (Seoul)

  • Asien-Pazifik (Osaka)

  • Asien-Pazifik (Singapur)

  • Asien-Pazifik (Sydney)

  • Asien-Pazifik (Jakarta)

  • Asien-Pazifik (Melbourne)

  • Kanada (Zentral)

  • Europa (Stockholm)

  • Europa (Frankfurt)

  • Europa (Zürich)

  • Europa (Irland)

  • Europe (London)

  • Europa (Paris)

  • Europa (Milan)

  • Europa (Spain)

  • Naher Osten (UAE)

  • Naher Osten (Bahrain)

  • Südamerika (São Paulo)

Erwägungen zur Kompatibilität

Mit SnapStart verwendet Lambda einen einzelnen Snapshot als Ausgangszustand für mehrere Ausführungsumgebungen. Wenn Ihre Funktion während der Initialisierungsphase eines der folgenden Elemente verwendet, müssen Sie vor der Verwendung möglicherweise einige Änderungen vornehmen: SnapStart

Eindeutigkeit

Wenn Ihr Initialisierungscode eindeutigen Inhalt generiert, der im Snapshot enthalten ist, ist der Inhalt möglicherweise nicht eindeutig, wenn er in Ausführungsumgebungen wiederverwendet wird. Um die Einzigartigkeit bei der Verwendung zu wahren SnapStart, müssen Sie nach der Initialisierung eindeutige Inhalte generieren. Dazu gehören einzigartigeIDs, einzigartige Geheimnisse und Entropie, die verwendet wird, um Pseudozufälligkeit zu erzeugen. Informationen zum Wiederherstellen von Eindeutigkeit finden Sie unter Umgang mit Einzigartigkeit mit Lambda SnapStart.

Netzwerkverbindungen

Der Zustand der Verbindungen, die Ihre Funktion während der Initialisierungsphase herstellt, ist nicht garantiert, wenn Lambda Ihre Funktion von einem Snapshot fortsetzt. Überprüfen Sie den Status Ihrer Netzwerkverbindungen und stellen Sie diese bei Bedarf wieder her. In den meisten Fällen werden Netzwerkverbindungen, die ein herstellt, automatisch wieder aufgenommen. AWS SDK Für andere Verbindungen lesen Sie die bewährten Methoden.

Temporäre Daten

Einige Funktionen laden während der Initialisierungsphase kurzlebige Daten herunter oder initialisieren diese, wie etwa temporäre Anmeldeinformationen oder im Cache gespeicherte Zeitstempel. Aktualisieren Sie kurzlebige Daten im Funktionshandler, bevor Sie sie verwenden, auch wenn Sie sie nicht verwenden. SnapStart

SnapStart Preisgestaltung

Es fallen keine zusätzlichen Kosten für an SnapStart. Die Abrechnung erfolgt basierend auf der Anzahl der Anfragen für Ihre Funktionen, der Zeit, die Ihr Code zum Ausführen benötigt, und dem für Ihre Funktion konfigurierten Arbeitsspeicher. Die Dauer wird vom Beginn der Ausführung Ihres Codes bis zur Rückgabe oder einem anderen Ende berechnet, aufgerundet auf die nächste 1 ms.

Gebühren für die Dauer fallen für Code an, der im Funktionshandler ausgeführt wird, für Initialisierungscode, der außerhalb des Handlers deklariert wurde, für die Zeit, die zum Laden von runtime (JVM) benötigt wird, und für jeden Code, der in einem Runtime-Hook ausgeführt wird. Weitere Informationen zur Berechnung von Gebühren durch Lambda finden Sie unter Überwachung für Lambda SnapStart.

Für Funktionen, die mit konfiguriert sind SnapStart, recycelt Lambda regelmäßig die Ausführungsumgebungen und führt Ihren Initialisierungscode erneut aus. Aus Gründen der Ausfallsicherheit erstellt Lambda Snapshots in mehreren Regionen. Jedes Mal, wenn Lambda Ihren Initialisierungscode in einer anderen Region erneut ausführt, fallen Gebühren an. Weitere Informationen zur Berechnung von Gebühren durch Lambda finden Sie unter AWS Lambda -Preise.

Vergleich von Lambda SnapStart und bereitgestellter Parallelität

Sowohl Lambda als auch bereitgestellte Parallelität können Kaltstarts SnapStart und Latenzen bei Ausreißern reduzieren, wenn eine Funktion skaliert wird. SnapStart hilft Ihnen, die Startleistung ohne zusätzliche Kosten um das bis zu 10-fache zu verbessern. Die bereitgestellte Gleichzeitigkeit sorgt dafür, dass die Funktionen im zweistelligen Millisekundenbereich initialisiert und reaktionsbereit sind. Für die Konfiguration der bereitgestellten Parallelität fallen Gebühren für Sie an. AWS-Konto Verwenden Sie die bereitgestellte Gleichzeitigkeit, wenn Ihre Anwendung strenge Anforderungen an die Kaltstartlatenz hat. Sie können nicht beide SnapStart und die bereitgestellte Parallelität auf derselben Funktionsversion verwenden.

Anmerkung

SnapStart funktioniert am besten, wenn es mit Funktionsaufrufen in großem Maßstab verwendet wird. Funktionen, die selten aufgerufen werden, weisen möglicherweise nicht dieselben Leistungsverbesserungen auf.

Weitere Ressourcen

Zusätzlich zur Lektüre der anderen Themen in diesem Kapitel empfehlen wir Ihnen auch, den AWS Lambda SnapStart Workshop Schneller starten mit zu testen und sich die Sitzung Schnelle Kaltstarts für Ihre Java-Funktionen aus AWS re:Invent 2022 anzusehen.