7.3. Активация и анализ логов профилировщика

Иногда система начинает тормозить и нужно найти проблемную точку. Для этого нужно активировать работу профилировщика. Однако, это дает overhead, поэтому, если вы хотите сделать это на проде, подумайте, а нужно ли это вам.

Чтобы это сделать, нужно в настройках добавить переменные

  • ENABLE_PROFILING = True (обязательная)

  • PROFILE_MIN_LOG_TIME = 1 (опционально) время в секундах на длительность запроса, после которой будет создан лог)

  • PROFILE_DIR (опционально) путь к директории с логами профилировщика. Если не задано, по умолчанию «/app/logs/profiling/»

При работе системы в этом режиме, могут создаваться файлы логов PROFILE_MIN_LOG_TIME секунд, то в директории PROFILE_DIR создается файл лога этого запроса. Просматривать в удобном виде можно следующим образом

https://jiffyclub.github.io/snakeviz/

pip install snakeviz
snakeviz ./logs/profiling/<filename.prof>

Вот это вроде можно, но я не проверял

pip install SquareMap RunSnakeRun
python runsnake.py OpenGLContext.prof

Анализ использования памяти (не проверял)

pip install meliae

from meliae import scanner
scanner.dump_all_objects('/app/logs/memory.dump')

runsnakemem logs/memory.dump