Tiago Tartari

Conteúdo

Continuous Profiling – Como configurar o Pyroscope no .NET do jeito certo?

A tecnologia tem auxiliado empresas a dar o próximo passo rumo à inovação e transformação digital. Nesse sentido, a implementação do Continuous Profiling com o Pyroscope no .NET pode contribuir para garantir a confiabilidade do produto, permitindo essa importante evolução.

No artigo anterior, discutimos o conceito de Continuous Profiling e como ele pode identificar problemas em produção e reduzir o MTTR. Agora, vamos aprofundar e explorar a implementação prática do Continuous Profiling usando o Pyroscope em aplicativos .NET, um recurso poderoso que pode trazer a observabilidade a um novo patamar em nossos projetos de software.

O que é o Pyroscope?

O Pyroscope é uma plataforma de análise de desempenho de código aberto. Sua principal função é auxiliar os desenvolvedores a entenderem melhor o desempenho de suas aplicações, identificando gargalos e melhorando a eficiência geral do código.

Com o objetivo primordial de orientar a identificação e resolução de problemas de desempenho, o Pyroscope oferece visibilidade contínua, análise detalhada e suporte a diversas linguagens de programação.

Visibilidade contínua

Diferentemente da maioria das ferramentas de análise de desempenho tradicionais, que proporcionam uma visão pontual ou periódica do desempenho da aplicação, fornecendo uma visibilidade contínua. Isso possibilita observar como o desempenho da sua aplicação se altera ao longo do tempo.

Análise detalhada

O Pyroscope permite aos desenvolvedores examinar o uso de recursos de maneira muito detalhada. É possível explorar até mesmo funções individuais dentro do código, possibilitando uma análise aprofundada de onde os recursos estão sendo utilizados e onde possíveis gargalos podem estar surgindo.

Suporte a diversas linguagens de programação

O Pyroscope é uma ferramenta flexível para as equipes de desenvolvimento de software, pois suporta uma variedade de linguagens de programação. Até o momento, ele oferece suporte nativo para Go, Python, Ruby e .NET, com planos de expandir o suporte para outras linguagens no futuro.

Implementando o Pyroscope no .NET

Antes de iniciar a implementação, o projeto completo está no meu Github. O primeiro passo para integrar o Pyroscope ao seu projeto .NET é adicionar a referência do pacote Pyroscope. Estamos utilizando a versão 0.8.4 neste exemplo.

Após executar esse comando, o .NET CLI adicionará a seguinte linha ao seu arquivo .csproj:

O próximo passo na configuração do Pyroscope é habilitar as funcionalidades específicas de rastreamento. O Pyroscope fornece uma série de configurações que permitem rastrear diferentes aspectos do desempenho da sua aplicação.

Essa linha habilita o rastreamento de alocações de memória. Isso ajudará você a entender melhor como a sua aplicação está usando a memória e pode ajudar a identificar vazamentos de memória ou uso ineficiente da memória.

Essa linha habilita o rastreamento de exceções. Isso permitirá que você veja quais partes do seu código estão gerando exceções e pode ajudar a identificar áreas problemáticas no seu código.

Essa linha habilita o rastreamento de contenção. Isso pode ajudar a identificar locais no seu código onde múltiplas threads estão competindo pelos mesmos recursos, o que pode levar a um desempenho degradado.

Essa linha habilita o rastreamento de uso de CPU. Isso pode ajudar a identificar áreas do seu código que estão usando uma quantidade desproporcional de recursos de CPU.

Adicionando rótulos para categorizar e filtrar dados do profiling

No Pyroscope, rótulos são uma maneira eficiente de categorizar e filtrar seus dados de profiling. Eles fornecem uma maneira adicional de segmentar suas métricas para uma análise mais granular. No contexto do .NET, você pode adicionar rótulos em qualquer parte do seu código onde deseja obter insights mais detalhados.

Em seguida, definimos o Dockerfile, e por fim, o docker-compose.

Conclusão

Discutimos a importância do Continuous Profiling para a inovação e transformação digital das empresas. Aprofundamos sobre a implementação prática no .NET, utilizando o Pyroscope – uma plataforma aberta de análise de desempenho. Analisamos as principais funcionalidades do Pyroscope, incluindo visibilidade contínua, análise detalhada e suporte a diversas linguagens de programação. Por fim, apresentamos um passo a passo para a implementação do Pyroscope em um projeto .NET, desde a adição do pacote à aplicação até a definição do Dockerfile e docker-compose.

Compartilhe:

Tiago Tartari

Tiago Tartari

Eu ajudo e capacito pessoas e organizações a transformar problemas complexos em soluções práticas usando a tecnologia para atingir resultados extraordinários.

Qual é o desafio
que você tem hoje?