This talk is targeted at python developers who develop long running services, which are susceptible to memory issues or unacceptable CPU usage (as determined by the developer or operations teams). We focus on debugging techniques that we have used in constrained environments (production like environments) where installation of additional software packages is not permitted, and techniques which we were able to use to debug a python process without restarting it (to avoid state loss).
Topics covered in the talk:
- An example debugging session in which memory bloat is diagnosed.
- An example debugging session in which high CPU usage is diagnosed.
- Tools which can be used in debugging these issues, and their limitations.
- Some thoughts about improving how we think about python, and assumptions made by python developers.
- Projects we are (slowly) working on to help us debug python processes in production, or production like environments.
The audience should learn about some useful standard python libraries which can be used to debug memory and CPU usage related issues, and how they were effectively used to solve problems in an enterprise product. The audience will also be encouraged to think differently about python programming, and encouraged to think about what it means to select python (or any other programming language) for a given task.