Passen Sie das Startverhalten der Java-Laufzeit für Lambda-Funktionen an - AWS Lambda

Passen Sie das Startverhalten der Java-Laufzeit für Lambda-Funktionen an

Auf dieser Seite sind spezifische Einstellungen für Java-Funktionen in AWS Lambda beschrieben. Sie können diese Einstellungen verwenden, um das Startup-Verhalten der Java-Laufzeit anzupassen. Dies kann die allgemeine Funktionslatenz reduzieren und die Gesamtleistung der Funktionen verbessern, ohne dass Code geändert werden muss.

Die JAVA_TOOL_OPTIONS-Umgebungsvariable verstehen

In Java unterstützt Lambda die Umgebungsvariable JAVA_TOOL_OPTIONS, um zusätzliche Befehlszeilenvariablen in Lambda festzulegen. Sie können diese Umgebungsvariable auf verschiedene Arten verwenden, z. B. um die Einstellungen für die gestufte Kompilierung anzupassen. Im nächsten Beispiel wird gezeigt, wie die Umgebungsvariable JAVA_TOOL_OPTIONS für diesen Anwendungsfall verwendet wird.

Beispiel: Einstellungen für die gestufte Kompilierung anpassen

Die gestufte Kompilierung ist ein Feature der virtuellen Java-Maschine (JVM). Sie können spezielle Einstellungen für die gestufte Kompilierung verwenden, um die Just-in-Time (JIT)-Compiler der JVM optimal zu nutzen. In der Regel ist der C1-Compiler für eine schnelle Startzeit optimiert. Der C2-Compiler ist für die beste Gesamtleistung optimiert, benötigt aber auch mehr Speicher und es dauert länger, bis er erreicht ist.

Die gestufte Kompilierung umfasst 5 verschiedene Stufen. Auf Stufe 0 interpretiert die JVM Java-Bytecode. Auf Stufe 4 verwendet die JVM den C2-Compiler, um die beim Startup der Anwendung gesammelten Profildaten zu analysieren. Im Laufe der Zeit überwacht sie die Code-Nutzung, um die besten Optimierungen zu identifizieren.

Durch die Anpassung der Stufe der gestuften Kompilierung können Sie die Kaltstartlatenz von Java-Funktionen reduzieren. Setzen Sie beispielsweise die Stufe der gestuften Kompilierung auf 1, damit die JVM den C1-Compiler verwendet. Dieser Compiler erzeugt schnell optimierten nativen Code, generiert jedoch keine Profildaten und verwendet niemals den C2-Compiler.

In der Java-17-Laufzeit ist das JVM-Flag für die mehrstufige Kompilierung standardmäßig so eingestellt, dass es bei Stufe 1 stoppt. Bis zur Java-11-Laufzeit können Sie die gestufte Kompilierungsstufe auf 1 setzen, indem Sie die folgenden Schritte ausführen:

Anpassen der Einstellungen für die gestufte Kompilierung (Konsole)
  1. Öffnen Sie die Seite Funktionen in der Lambda-Konsole.

  2. Wählen Sie eine Java-Funktion, für die Sie die gestufte Kompilierung anpassen möchten.

  3. Wählen Sie die Registerkarte Konfiguration und dann im linken Menü die Option Umgebungsvariablen aus.

  4. Wählen Sie Bearbeiten aus.

  5. Wählen Sie Umgebungsvariablen hinzufügen aus.

  6. Geben Sie JAVA_TOOL_OPTIONS als Schlüssel ein. Geben Sie -XX:+TieredCompilation -XX:TieredStopAtLevel=1 als Wert ein.

    Fügen Sie die Umgebungsvariable JAVA_TOOL_OPTIONS mit der Lambda-Konsole hinzu
  7. Wählen Sie Speichern.

Anmerkung

Sie können Lambda SnapStart auch verwenden, um Kaltstartprobleme zu beheben. SnapStart verwendet im Cache gespeicherte Snapshots Ihrer Ausführungsumgebung, um die Startleistung erheblich zu verbessern. Weitere Informationen zu den Features, Einschränkungen und unterstützten Regionen von SnapStart finden Sie unter Verbesserung der Startup-Leistung mit Lambda SnapStart.

Beispiel: Anpassen des GC-Verhaltens mit JAVA_TOOL_OPTIONS

Java-11-Laufzeiten verwenden den Serial Garbage Collector (GC) für Garbage Collection. Standardmäßig verwenden Java-17-Laufzeiten auch den Serial GC. Mit Java 17 können Sie jedoch auch die Umgebungsvariable JAVA_TOOL_OPTIONS verwenden, um den Standard-GC zu ändern. Sie können zwischen dem Parallel GC und dem Shenandoah GC wählen.

Wenn Ihre Workload beispielsweise mehr Arbeitsspeicher und mehrere CPUs benötigt, sollten Sie erwägen, den Parallel GC zu verwenden, um eine bessere Leistung zu erzielen. Hängen Sie dazu Folgendes an den Wert Ihrer Umgebungsvariablen JAVA_TOOL_OPTIONS an:

-XX:+UseParallelGC