A resposta do Dawny33 é boa, mas eu começaria mais cedo no processo de desenvolvimento.
Observar o ambiente da nuvem para garantir que suas funções se comportem conforme o esperado (incluindo as funções de "produção", que podem operar com um conjunto de dados diferente) é crucial, pois pode revelar coisas impossíveis de reproduzir localmente ou com um conjunto de dados de teste.
No entanto, eu diria que esse teste de desempenho que você faz com o objetivo de otimização deve começar diretamente da máquina do desenvolvedor. Ou, pelo menos, de algum ambiente local antes de enviar para a nuvem.
A razão pela qual digo isso é que, embora o AWS Lambdas seja incrível em muitos pontos, o fato de você não ter um controle total no servidor limitará suas habilidades de instrumentação. Não estou dizendo que a instrumentação é impossível quando não há servidor, mas tente descobrir quantas interrupções de CPU você tem (e quantas são causadas pelo seu código) apenas por diversão;)
Portanto, o que eu aconselho, e isso na verdade não se limita ao servidor, é iniciar o perfil mais cedo. A criação de perfil do NodeJS pode ser feita com muitas ferramentas diferentes; NewRelic, dynatrace e AppDynamic são alguns dos grandes players. Também existe um player menor, alguns deles são apenas um pacote NPM para instalar (como o Nodefly). Também é possível executar o NodeJS sem nenhuma ferramenta adicional, pois existe um criador de perfil incorporado no mecanismo V8. Esta documentação do NodeJS o ajudará a começar.
Qualquer que seja a ferramenta escolhida, você deseja instalá-la localmente e coletar dados de criação de perfil. Isso pode envolver a execução de um agente ou a inclusão de um pacote no seu package.json. As instruções da sua ferramenta lhe dirão como instalá-lo. Um bom profiler permitirá que você saiba quanta memória e CPU você usa. Ferramentas melhores fornecerão informações sobre quantas chamadas remotas foram feitas e quanto tempo levaram.
Use os dados de criação de perfil fornecidos pela ferramenta para identificar gargalos e resolvê-los. Não há limite para a criação de perfis. Algumas pessoas (loucas?) Analisam as chamadas do sistema de sua função mais crítica. Pode ser necessário fazer esse tipo de coisa se você deseja economizar nanossegundos de sua função (mas talvez o AWS Lambda talvez não seja a melhor opção para começar).
Também é importante notar que, neste momento, não mencionei nada específico do AWS Lambda. Isso ocorre porque suas otimizações provavelmente não serão específicas do AWS Lambda (afinal, em sem servidor, você não deve se preocupar com o servidor / ambiente).
Certifique-se de que não apenas seu código funcione, mas funcione da maneira que você espera. Não otimize demais, mas mantenha um olho crítico no uso da CPU e da memória. Uma matriz de 2 MB deve realmente crescer para 10 MB quando você a classifica? Provavelmente não.
Em seguida, você poderá usar as ferramentas mencionadas por Dawny33, ou algumas outras ferramentas, para confirmar que suas funções executam da mesma forma quando implantadas no Lambda. No entanto, você já terá um nível muito alto de confiança em sua função e precisará validar apenas se eles se comportam corretamente, sem o perfil completo deles.
Talvez eu não consiga responder completamente, mas aqui estão minhas opiniões sobre minha experiência limitada com o lambda:
monitoring
guia do Lambda , que se parece com isso:O mesmo acontece com aceleradores / erros / número de invocações.
fonte
Confira o IOpipe Profiler para obter os dumps completos do profiler v8 das invocações do Lambda. Você pode carregá-los no Chrome Devtools para ver exatamente onde o tempo da CPU é gasto e como a memória está sendo usada para suas funções.
Isenção de responsabilidade: trabalho para o IOpipe
fonte
Use o agente StackImpact para obter perfis de CPU e memória. Mais detalhes na postagem do blog: CPU do AWS Lambda e perfil de memória (Node.js) . Como o processo do Lambda Node.js está congelando entre solicitações, a maioria das outras ferramentas provavelmente não funcionará imediatamente.
Isenção de responsabilidade: trabalho para StackImpact
fonte