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 Eindeutigkeit 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, die arm64-Architektur, Amazon Elastic File System (Amazon EFS) 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 Lambda-API, 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 Aktivieren und Verwalten von Lambda 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 die unveröffentlichte Version einer Funktion ($LATEST) verwenden SnapStart .

Unterstützte Regionen

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

  • 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 (VAE)

  • 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 eindeutige IDs, eindeutige Geheimnisse und Entropie, die zum Generieren von Pseudozufälligkeiten verwendet wird. Informationen zum Wiederherstellen von Eindeutigkeit finden Sie unter Umgang mit Eindeutigkeit 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 AWS SDK herstellt, automatisch wieder aufgenommen. 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.

Die Gebühren für die Dauer gelten für Code, der im Funktions-Handler ausgeführt wird, Initialisierungscode, der außerhalb des Handlers deklariert ist, die Zeit, die zum Laden der Laufzeit (JVM) benötigt wird, und Code, der in einem Laufzeit-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. Um die Ausfallsicherheit zu gewährleisten, erstellt Lambda Snapshots in mehreren Availability Zones. Jedes Mal, wenn Lambda Ihren Initialisierungscode in einer anderen Availability Zone 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 dabei, 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.