Отладка утечек памяти в Django

Не так давно мне нужно было отловить утечку памяти в Django проекте. Для отладки был выбран Guppy. Для начала использования Guppy нам потребуется 5 минут и 5 простых шагов.

  1. Для начала установим наш инструмент отладки: pip install guppy

  2. Теперь нам нужно добавить следующий код в наш главный urls.py. import guppy
    from guppy.heapy import Remote
    Remote.on()

  3. Запускаем наш Django поект. Не забудьте выключить режим отладки, иначе все запросы к базе будут кешироваться и занимать память. DEBUG = False

  4. Теперь в терминале нужно выполнить команду python -c "from guppy import hpy;hpy().monitor()". Дальше мы будем использовать следующие комманды:

    • lc - увидеть процессы
    • sc - подключится к процессу
    • int - перейти в интерактивную консоль
    • hp.heap() - увидеть количество потребляемой памяти
    • hp.setref() - очистить информацию о количестве памяти
  5. Начинаем отладку. Смотрим количество памяти используя hp.heap(), затем очищаем эту информацию с помощью комманды hp.setref(). Делаем действия, которые по нашему мнению текут, и смотрим на hp.heap().