Personnalisation du comportement de démarrage de l’environnement d’exécution Java pour les fonctions Lambda - AWS Lambda

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Personnalisation du comportement de démarrage de l’environnement d’exécution Java pour les fonctions Lambda

Cette page décrit les paramètres spécifiques aux fonctions Java dans AWS Lambda. Vous pouvez utiliser ces paramètres pour personnaliser le comportement de démarrage de l'exécution Java. Cela permet de réduire le temps de latence et d'améliorer les performances globales de la fonction, sans avoir à modifier le code.

Présentation de la variable d’environnement JAVA_TOOL_OPTIONS

Sur Java, Lambda prend en charge la variable d'environnement JAVA_TOOL_OPTIONS pour définir des variables de ligne de commande supplémentaires dans Lambda. Vous pouvez utiliser cette variable d'environnement de différentes manières, par exemple pour personnaliser les paramètres de compilation par niveaux. L'exemple suivant montre comment utiliser la variable d'environnement JAVA_TOOL_OPTIONS pour ce cas d'utilisation.

Exemple : personnalisation des paramètres de compilation par niveaux

La compilation par niveaux est une fonctionnalité de la JVM (Java Virtual Machine). Vous pouvez utiliser des paramètres de compilation par niveaux spécifiques pour tirer le meilleur parti des compilateurs juste à temps (JIT) de la JVM. Généralement, le compilateur C1 est optimisé pour un démarrage rapide. Le compilateur C2 est optimisé pour obtenir les meilleures performances globales, mais il utilise également plus de mémoire et prend plus de temps pour y parvenir.

Il existe cinq niveaux différents de compilation par niveaux. Au niveau 0, la JVM interprète le bytecode Java. Au niveau 4, la JVM utilise le compilateur C2 pour analyser les données de profilage collectées lors du démarrage de l'application. Au fil du temps, elle surveille l'utilisation du code pour identifier les meilleures optimisations.

La personnalisation du niveau de compilation par niveau peut vous aider à réduire la latence de démarrage à froid de la fonction Java. Par exemple, définissez le niveau de compilation par niveau sur 1 pour que la JVM utilise le compilateur C1. Ce compilateur produit rapidement un code natif optimisé, mais il ne génère aucune donnée de profilage et n'utilise jamais le compilateur C2.

Dans l'exécution Java 17, l'indicateur JVM pour la compilation par niveaux est configuré pour s'arrêter au niveau 1 par défaut. Pour l'exécution Java 11 et les versions antérieures, vous pouvez définir le niveau de compilation par niveaux sur 1 en procédant comme suit :

Pour personnaliser les paramètres de compilation par niveaux (console)
  1. Ouvrez la page Fonctions de la console Lambda.

  2. Choisissez une fonction Java pour laquelle vous souhaitez personnaliser la compilation par niveau.

  3. Choisissez l'onglet Configuration, puis Variables d'environnement dans le menu de gauche.

  4. Choisissez Modifier.

  5. Choisissez Ajouter une variable d’environnement.

  6. Pour Nom de la clé, saisissez JAVA_TOOL_OPTIONS. Pour Valeur, saisissez -XX:+TieredCompilation -XX:TieredStopAtLevel=1.

    Ajout de la variable d’environnement JAVA_TOOL_OPTIONS à l’aide de la console Lambda
  7. Choisissez Save (Enregistrer).

Note

Vous pouvez également utiliser Lambda SnapStart pour atténuer les problèmes de démarrage à froid. SnapStart utilise des instantanés mis en cache de votre environnement d'exécution pour améliorer de manière significative les performances de démarrage. Pour en savoir plus sur les fonctionnalités de SnapStart, les limitations et les régions prises en charge, consultez Améliorer les performances de démarrage avec Lambda SnapStart.

Exemple : personnalisation du comportement de GC à l'aide de JAVA_TOOL_OPTIONS

Les exécutions Java 11 utilisent le récupérateur de mémoire (GC) Serial pour la récupération de mémoire. Par défaut, les exécutions Java 17 utilisent également le GC Serial. Toutefois, avec Java 17, vous pouvez également utiliser la variable d'environnement JAVA_TOOL_OPTIONS pour modifier le GC par défaut. Vous pouvez choisir entre le GC Parallel et le GC Shenandoah.

Par exemple, si votre charge de travail utilise davantage de mémoire et plusieurs UC, envisagez d'utiliser le GC Parallel pour de obtenir de meilleures performances. Vous pouvez le faire en ajoutant ce qui suit à la valeur de votre variable d'environnement JAVA_TOOL_OPTIONS :

-XX:+UseParallelGC