Personalizar o comportamento de startup de runtime para as funções do Lambda
Esta página descreve as configurações específicas das funções do Java no AWS Lambda. Você pode usar essas configurações para personalizar o comportamento de inicialização de runtime do Java. Isso pode reduzir a latência geral da função e melhorar a performance geral da função sem a necessidade de modificar qualquer código.
Entender a variável de ambiente JAVA_TOOL_OPTIONS
No Java, o Lambda é compatível com a variável de ambiente JAVA_TOOL_OPTIONS
para definir variáveis adicionais da linha de comando no Lambda. Você pode usar essa variável de ambiente de várias maneiras, como para personalizar configurações de compilação em camadas. O exemplo a seguir demonstra como usar a variável de ambiente JAVA_TOOL_OPTIONS
para esse caso de uso.
Exemplo: personalizar as configurações de compilação em camadas
A compilação em camadas é um recurso da máquina virtual Java (JVM). É possível usar configurações específicas de compilação em camadas para fazer o melhor uso dos compiladores just-in-time (JIT) da JVM. Normalmente, o compilador C1 é otimizado para um tempo de inicialização rápido. O compilador C2 é otimizado para a melhor performance geral, mas também usa mais memória e leva mais tempo para alcançá-la.
Existem cinco níveis diferentes de compilação em camadas. No nível 0, a JVM interpreta o código de bytes do Java. No nível 4, a JVM usa o compilador C2 para analisar os dados de criação de perfil coletados durante a inicialização da aplicação. Com o tempo, ele monitora o uso do código para identificar as melhores otimizações.
Personalizar o nível de compilação em camadas pode ajudar a reduzir a latência de inicialização a frio da função do Java. Por exemplo, defina o nível de compilação em camadas como 1 para que a JVM use o compilador C1. Esse compilador produz rapidamente código nativo otimizado, mas não gera qualquer dado de criação de perfil e nunca usa o compilador C2.
Por padrão, no runtime do Java 17, o sinalizador da JVM para compilação em camadas é configurado para ser interrompido no nível 1. No runtime do Java 11 e versões inferiores, você pode definir o nível de compilação em camadas como 1 ao executar as seguintes etapas:
Para personalizar as configurações de compilação em camadas (console)
-
Abra a página Funções
no console do Lambda. -
Escolha uma função do Java para a qual você deseja personalizar a compilação em camadas.
-
Escolha a guia Configuração e, em seguida, escolha Variáveis de ambiente no menu à esquerda.
-
Selecione a opção Editar.
-
Escolha Add environment variable (Adicionar variável de ambiente).
-
Na chave, insira
JAVA_TOOL_OPTIONS
. No valor, insira-XX:+TieredCompilation -XX:TieredStopAtLevel=1
. -
Escolha Salvar.
nota
Você também pode usar o Lambda SnapStart para mitigar problemas de inicialização a frio. O SnapStart usa snapshots em cache do ambiente de execução para melhorar significativamente a performance da inicialização. Para obter mais informações sobre os recursos, limitações e regiões compatíveis com o SnapStart, consulte Aprimoramento da performance de inicialização com o Lambda SnapStart.
Exemplo: personalização do comportamento do GC usando JAVA_TOOL_OPTIONS
Os runtimes do Java 11 usam o SerialJAVA_TOOL_OPTIONS
para alterar o GC padrão. Você pode escolher entre o Parallel GC e o Shenandoah GC
Por exemplo, se sua workload usa mais memória e diversas CPUs, considere usar o Parallel GC para obter melhor performance. Você pode fazer isso ao anexar o seguinte ao valor da variável de ambiente JAVA_TOOL_OPTIONS
:
-XX:+UseParallelGC