Полезная функция для измерения потребляемой памяти:
def memory_usage_psutil(point):
import os
import psutil
print '{:15s}'.format(point), psutil.Process(os.getpid()).memory_info_ex()
Например, мы определили, что какое-то приложение при инициализации потребляет память. Иницилизация приложения проиходит в django.apps.registry. Добавляем нашу функцию в начало файла, затем проверяем память после каждого приложения:
memory_usage_psutil('START APP READY')
for app_config in self.get_app_configs():
app_config.ready()
memory_usage_psutil(app_config.label)
memory_usage_psutil('END APP READY')
Запускаем любую команду Django, например ./manage.py runserver --nothreading --noreload
. Получаем:
$ ./manage.py runserver --nothreading --noreload
START APP READY pextmem(rss=60080128, vms=225337344, shared=8146944, text=2871296, lib=0, data=50700288, dirty=0)
auth pextmem(rss=60080128, vms=225337344, shared=8146944, text=2871296, lib=0, data=50700288, dirty=0)
contenttypes pextmem(rss=60080128, vms=225337344, shared=8146944, text=2871296, lib=0, data=50700288, dirty=0)
formtools pextmem(rss=60080128, vms=225337344, shared=8146944, text=2871296, lib=0, data=50700288, dirty=0)
humanize pextmem(rss=60080128, vms=225337344, shared=8146944, text=2871296, lib=0, data=50700288, dirty=0)
messages pextmem(rss=60080128, vms=225337344, shared=8146944, text=2871296, lib=0, data=50700288, dirty=0)
sessions pextmem(rss=60080128, vms=225337344, shared=8146944, text=2871296, lib=0, data=50700288, dirty=0)
sitemaps pextmem(rss=60080128, vms=225337344, shared=8146944, text=2871296, lib=0, data=50700288, dirty=0)
staticfiles pextmem(rss=60080128, vms=225337344, shared=8146944, text=2871296, lib=0, data=50700288, dirty=0)
django_js_reverse pextmem(rss=60080128, vms=225337344, shared=8146944, text=2871296, lib=0, data=50700288, dirty=0)
djcelery pextmem(rss=60080128, vms=225337344, shared=8146944, text=2871296, lib=0, data=50700288, dirty=0)
djcelery_email pextmem(rss=60080128, vms=225337344, shared=8146944, text=2871296, lib=0, data=50700288, dirty=0)
gunicorn pextmem(rss=60080128, vms=225337344, shared=8146944, text=2871296, lib=0, data=50700288, dirty=0)
rest_framework pextmem(rss=60080128, vms=225337344, shared=8146944, text=2871296, lib=0, data=50700288, dirty=0)
rest_framework_swagger pextmem(rss=60080128, vms=225337344, shared=8146944, text=2871296, lib=0, data=50700288, dirty=0)
default pextmem(rss=60080128, vms=225337344, shared=8146944, text=2871296, lib=0, data=50700288, dirty=0)
taggit pextmem(rss=60080128, vms=225337344, shared=8146944, text=2871296, lib=0, data=50700288, dirty=0)
brevisurl pextmem(rss=60080128, vms=225337344, shared=8146944, text=2871296, lib=0, data=50700288, dirty=0)
oauth2_provider pextmem(rss=60080128, vms=225337344, shared=8146944, text=2871296, lib=0, data=50700288, dirty=0)
main pextmem(rss=60841984, vms=387100672, shared=8794112, text=2871296, lib=0, data=201711616, dirty=0)
END APP READY pextmem(rss=60862464, vms=387100672, shared=8794112, text=2871296, lib=0, data=201711616, dirty=0)
START APP READY pextmem(rss=61239296, vms=387497984, shared=8798208, text=2871296, lib=0, data=202108928, dirty=0)
END APP READY pextmem(rss=61239296, vms=387497984, shared=8798208, text=2871296, lib=0, data=202108928, dirty=0)
Performing system checks...
System check identified no issues (0 silenced).
May 26, 2015 - 09:35:12
Django version 1.7.3, using settings 'loader.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Обновлено 27 Май 2015, 11:29 alerion.