Impostazioni di personalizzazione della funzione Lambda in Java - AWS Lambda

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Impostazioni di personalizzazione della funzione Lambda in Java

Questa pagina descrive le impostazioni specifiche delle funzioni Java in AWS Lambda. È possibile utilizzare queste impostazioni per personalizzare il comportamento di avvio del runtime Java. Ciò può ridurre la latenza complessiva della funzione e migliorare le prestazioni complessive delle funzioni senza dover modificare il codice.

Variabile di ambiente JAVA_TOOL_OPTIONS

In Java, Lambda supporta la variabile di ambiente JAVA_TOOL_OPTIONS per impostare variabili della linea di comando aggiuntive in Lambda. È possibile utilizzare questa variabile di ambiente in vari modi, ad esempio per personalizzare le impostazioni di compilazione a più livelli. L'esempio seguente illustra come utilizzare la variabile di ambiente JAVA_TOOL_OPTIONS per questo caso d'uso.

Esempio: personalizzazione delle impostazioni di compilazione a più livelli

La compilazione a più livelli è una funzionalità della macchina virtuale Java (JVM). È possibile utilizzare impostazioni di compilazione specifiche a più livelli per utilizzare al meglio i compilatori JVM (JIT). just-in-time In genere, il compilatore C1 è ottimizzato per tempi di avvio rapidi. Il compilatore C2 è ottimizzato per le migliori prestazioni complessive, ma di contro utilizza più memoria e impiega più tempo per raggiungerle.

Esistono 5 diversi livelli di compilazione a più livelli. Al livello 0, la JVM interpreta il bytecode Java. Al livello 4, la JVM utilizza il compilatore C2 per analizzare i dati di profilazione raccolti durante l'avvio dell'applicazione. Nel tempo, monitora l'utilizzo del codice per identificare le migliori ottimizzazioni.

La personalizzazione del livello di compilazione a più livelli può aiutarti a ridurre la latenza di avvio a freddo delle funzioni Java. Ad esempio, imposta il livello di compilazione a più livelli su 1 per fare in modo che la JVM utilizzi il compilatore C1. Questo compilatore produce rapidamente codice nativo ottimizzato, ma non genera dati di profilazione e non utilizza mai il compilatore C2.

Nel runtime di Java 17, il flag JVM per la compilazione a più livelli è configurato per interrompersi al livello 1 per impostazione predefinita. Per il runtime di Java 11 e versioni precedenti, puoi impostare il livello di compilazione a più livelli su 1 effettuando le seguenti operazioni:

Personalizzazione delle impostazioni di compilazione a più livelli (console)
  1. Apri la pagina Funzioni della console Lambda.

  2. Scegli una funzione Java per la quale desideri personalizzare la compilazione a più livelli.

  3. Scegli la scheda Configurazione, quindi scegli Variabili di ambiente nel menu a sinistra.

  4. Scegli Modifica.

  5. Scegli Add environment variable (Aggiungi variabile d'ambiente).

  6. Per la chiave, inserisci JAVA_TOOL_OPTIONS. Per il valore, inserisci -XX:+TieredCompilation -XX:TieredStopAtLevel=1.

    Uno screenshot della console Lambda che mostra come aggiungere impostazioni di compilazione a più livelli utilizzando la variabile di ambiente JAVA_TOOL_OPTIONS.
  7. Selezionare Salva.

Nota

Puoi anche usare Lambda SnapStart per mitigare i problemi di avvio a freddo. SnapStartutilizza istantanee memorizzate nella cache dell'ambiente di esecuzione per migliorare significativamente le prestazioni di avvio. Per ulteriori informazioni su SnapStart funzionalità, limitazioni e aree supportate, consulta. Migliorare le prestazioni di avvio con Lambda SnapStart

Esempio: personalizzazione del comportamento del GC utilizzando JAVA_TOOL_OPTIONS

I runtime di Java 11 utilizzano Serial Garbage Collector (GC) per la rimozione di oggetti inutili (garbage collection). Per impostazione predefinita, anche i runtime di Java 17 utilizzano Serial GC. Tuttavia, con Java 17 puoi anche utilizzare la variabile di ambiente JAVA_TOOL_OPTIONS per modificare il GC predefinito. Puoi scegliere tra Parallel GC e Shenandoah GC.

Ad esempio, se il carico di lavoro utilizza più memoria e più CPU, prendi in considerazione l'utilizzo di Parallel GC per ottenere prestazioni migliori. Puoi farlo aggiungendo quanto segue al valore della tua variabile di ambiente JAVA_TOOL_OPTIONS:

-XX:+UseParallelGC