Подтвердить что ты не робот

Использование памяти Django происходит с каждым запросом

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

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

Я тестирую память, используя команду, предложенную Webfaction:

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

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

Ответ 3

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

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

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

Ответ 4

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

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

Ответ 5

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

Ответ 6

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

Ответ 8

Могут ли модули mod_python и mod_wsgi загружаться в apache?

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