Использование памяти Django растет с каждым запросом - PullRequest
26 голосов
/ 19 февраля 2010

Я переместил свой первый проект Django из DjangoEurope в Webfaction, и это вызвало проблему, похожую на утечку памяти.При каждом отдельном запросе использование памяти серверным процессом возрастает примерно на 500 КБ.Это никогда не идет вниз.Это продолжается до тех пор, пока Webfaction не убьет его за использование слишком большого объема памяти.

Я отчетливо вижу это, когда обновляю интерфейс администратора Django в своем браузере (хотя это происходит с каждой страницей, не только с интерфейсом администратора -хотя интерфейс администратора был бы хорошим тестовым примером, потому что там нет моего кода).При каждой перезагрузке браузера потребление памяти увеличивается на пару сотен килобайт.

Я проверяю память с помощью команды, предложенной Webfaction:

ps -u publica -o rss,etime,pid,command

Подробнее о моей настройке:

  • Django 1.1 (стабильный)
  • Настройка Django по умолчанию для веб-фракций с использованием Apache и mod_wsgi
  • DEBUG, установленная на False
  • MySQLdb 1.2.2 от Webfaction, но, услышав о некоторых проблемах, я попробовал версию 1.2.3c.Не помогло.

Редактировать: Я создал пустой проект Django - конфигурация Django по умолчанию плюс django.contrib.admin и свежую пустую базу данных (пробовал как с mysql, так и с postgresql).Я начал перезагружать админку Django в своем браузере и наблюдал за использованием памяти.Сначала я увидел возникшую проблему - использование памяти росло после каждой перезагрузки.Но затем оно стабилизировалось и перестало расти.Это согласуется с тем, как вел себя мой оригинальный проект на Django Europe.К сожалению, в Webfaction он никогда не стабилизируется (или, по крайней мере, не в пределах памяти, доступной моей учетной записи).Любой совет?

Ответы [ 8 ]

13 голосов
/ 28 февраля 2010

Боюсь, у меня нет определенных ответов.Советы Грэма Дамплтона были самыми полезными, но, к сожалению, он не дал ответа (только комментарии), поэтому нет никакого способа принять его ответ.

Хотя я до сих пор не полностью решил проблему, вотнекоторые основные советы для других людей, имеющих подобные проблемы:

2 голосов
/ 13 января 2011

У нас была похожая проблема с Webfaction, но оказалось, что это вовсе не из-за них. В Django есть ошибка, связанная с высоким использованием памяти при использовании карты сайта с большим количеством элементов: http://code.djangoproject.com/ticket/11572

Когда мы удалили карту сайта, она больше не загружается на 90 Мб. Просто подумал, что должен упомянуть об этом, так как для устранения неполадок потребовалось много времени.

1 голос
/ 26 февраля 2010

Проверьте, включен ли бэкэнд кэш-памяти в процессе, и если да, это может быть проблемой (новые записи в кеше при каждом запросе).

1 голос
/ 24 февраля 2010

Я бы посоветовал не догадываться.

Взгляните на http://code.google.com/p/django-dowser/,. Это очень полезное приложение для обнаружения утечек памяти и определения того, какие части вашего кода отвечают за потребление памяти..

1 голос
/ 19 февраля 2010

У меня те же проблемы с webfaction.

Метод, который я использую, и какую webfaction сказал мне, что я должен продолжать использовать, - это запуск задания cron, которое проверяет память каждые 5 минут или около того, и перезапускает любойприложения, которые выходят из-под контроля.

Из 4 приложений python на веб-фракции я в среднем 4 перезапуска в день.

0 голосов
/ 26 февраля 2010

Загружены ли в apache модули mod_python и mod_wsgi?

Я знаю, что mod_wsgi не нравится иметь mod_python в его сборке.Проверьте, что он не загружен.

0 голосов
/ 19 февраля 2010
0 голосов
/ 19 февраля 2010

У меня тоже были проблемы с памятью в Webfaction - они действительно не появлялись, пока я не добавил свое пятое приложение. Я попробовал несколько настроек в моих apache-конфигах, но в конечном итоге у меня получилось просто переключиться на mod_wsgi.

...