No primeiro artigo de nossa pequena série, exploramos como desenvolver e implantar a função Lambda usando Docker Container Image e Java runtime. Exploramos 2 casos de uso:
Neste artigo, mediremos inicializações a frio e a quente da função Lambda usando esta abordagem Imagem de contêiner Docker base do AWS Lambda.
Para nossas medições, usaremos nosso aplicativo de exemplo da primeira parte e usaremos o tempo de execução Java 21 para nossas funções Lambda. Para todas as funções Lambda, fornecemos 1024 MB de memória e usamos JAVA_TOOL_OPTIONS: "-XX: TieredCompilation -XX:TieredStopAtLevel=1" pois esta opção de compilação fornece uma troca muito boa entre os tempos de inicialização a frio e a quente.
Os resultados do experimento abaixo foram baseados na reprodução de mais de 100 partidas a frio e aproximadamente 100.000 partidas a quente durante 1 hora com a função Lambda GetProductByIdWithPureJava21GraalVMNativeImageLambda que é mapeada para a classe manipuladora Java Lambda que é responsável por recuperar o produto (armazenado no DynamoDB) por id. Para isso usei a ferramenta de teste de carga, ei, mas você pode usar qualquer ferramenta que quiser, como Artilharia sem servidor ou Postman.
Tempo de início frio (c) e quente (m) em ms:
p75 | cp90 | cp99 | c p99.9 | c máx | p50 | p75 | p90 | wp99 | w p99.9 | w máximo | |
---|---|---|---|---|---|---|---|---|---|---|---|
3219.44 | 3314.12 | 4632.16 | 6513,35 | 6517.71 | 5.47 | 6.20 | 7,39 | 17.14 | 43.03 | 1386.07 |
AWS Lambda SnapStart, que reduz significativamente os tempos de inicialização a frio, está disponível atualmente apenas para tempos de execução gerenciados do Java Corretto (11, 17 e 21) e não para imagens de contêiner do Docker. Você pode explorar a ferramenta jlink para montar e otimizar um conjunto de módulos e suas dependências em uma imagem de tempo de execução personalizada menor e compartilhamento de dados de classe (CDS), o que ajuda a reduzir o tempo de inicialização para aplicativos de linguagem de programação Java, em particular aplicativos menores, bem como reduzir a pegada. A vantagem de usar a imagem Docker como artefato de implantação para Java é a capacidade de usar o tempo de execução Java recente como Java 22 (Java 23 será lançado em setembro de 2024).
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3