Отладка утечек памяти в Django
27 Feb 2014Не так давно мне нужно было отловить утечку памяти в Django проекте. Для отладки был выбран Guppy. Для начала использования Guppy нам потребуется 5 минут и 5 простых шагов.
Для начала установим наш инструмент отладки:
pip install guppy
Теперь нам нужно добавить следующий код в наш главный
urls.py
.import guppy
from guppy.heapy import Remote
Remote.on()
Запускаем наш Django поект. Не забудьте выключить режим отладки, иначе все запросы к базе будут кешироваться и занимать память.
DEBUG = False
Теперь в терминале нужно выполнить команду
python -c "from guppy import hpy;hpy().monitor()"
. Дальше мы будем использовать следующие комманды:-
lc
- увидеть процессы -
sc
- подключится к процессу -
int
- перейти в интерактивную консоль -
hp.heap()
- увидеть количество потребляемой памяти -
hp.setref()
- очистить информацию о количестве памяти
-
Начинаем отладку. Смотрим количество памяти используя
hp.heap()
, затем очищаем эту информацию с помощью коммандыhp.setref()
. Делаем действия, которые по нашему мнению текут, и смотрим наhp.heap()
.