Отладка утечек памяти в 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().