Skip to content. | Skip to navigation

Personal tools

Navigation

You are here: Home / Program / Python Brasil / Web Development / sys._current_frames(): Radiografando seu software em tempo real enquanto ele roda
Web Development

sys._current_frames(): Radiografando seu software em tempo real enquanto ele roda

Terry Jones Room
02/10
16:40

Talk details

Language: Portuguese
Level: Intermediate
Summary:

Problemas de performance são coisas difíceis e frustrantes de investigar. Especialmente se só acontecem quando seu cliente está olhando, mas não você.

A linguagem Python vem com ferramentas elaboradas de profiling, como o módulo cProfile, mas em ambientes complexos de código, seu relatório pode ser difícil de decifrar, e a lentidão que acrescenta ao código executado tornam proibitivo executá-lo em ambientes em produção.

Porém, Python é uma linguagem muito reflexiva, permitindo extensa investigação de seu próprio estado durante a execução, e uma de suas ferramentas menos conhecidas é função sys._current_frames(). Ela pode ser usada para tirar radiografias instantâneas do que todas as threads do seu programa estão fazendo. Também pode ser usada para fazer uma espécie de profiling por amostragem, com quase nada de impacto de performance adicional no seu sistema.

Nesta palestra vamos investigar como essa função pode ser usada para descobrir o que seu programa está fazendo, exatamente no momento em que ele está se comportando mal. Vamos também entender como e porque olhar para uma série de tracebacks ajuda muito mais a localizar rapidamente os "pontos quentes" do seu código do que olhar para um bando de estatísticas.

Mostraremos também alguns estudos de caso de problemas reais de performance desatados com o auxílio essa técnica que foram causados por interações complexas entre components distintos, incluindo:

  • Um caso difícil em uma instalação de ERP5 em produção em um cliente corporativo da Nexedi

  • Um caso de gargalos intermitentes de performance em um grande portal governamental no Brasil

Por fim, demonstraremos o uso do slowlog, um middleware WSGI que incorpora essa técnica, em conjunto com um aplicativo escrito em Django.

Presentation:

Speaker details

Leonardo Rochael AlmeidaLeonardo Rochael Almeida
Leonardo trabalha com Python e Zope desde 2001 e é um core developer do Zope e do Plone. Co-fundador da Associação Python Brasil, evangelista discreto de Python, e teve uma mãozinha no fato de que hoje o Governo Federal e o programa Interlegis usam Python e Plone. Hoje trabalha na Geekie.com.br, uma StartUp na área de Educação que personaliza a experiência de aprendizado por meio da tecnologia.

Sponsors

Diamond
Platinum
Gold
Bronze
À la Carte
Supporting
Media Support
Free and Open Source
Organization