Использование моей памяти увеличивается с течением времени и перезапуск Django не подходит пользователям.
Я не уверен, как сделать профилирование использования памяти, но некоторые советы о том, как начать измерение, будут полезны.
У меня такое ощущение, что есть несколько простых шагов, которые могут принести большие выгоды. Обеспечение "debug" установлено на "False" - это очевидный biggie.
Кто-нибудь может предложить других? Насколько улучшено кэширование на сайтах с низким трафиком?
В этом случае я запускаюсь под Apache 2.x с mod_python. Я слышал, что mod_wsgi немного компактнее, но было бы сложно переключиться на этом этапе, если бы я не знал, что выигрыш будет значительным.
Изменить: Спасибо за советы до сих пор. Любые предложения, как узнать, что использует память? Есть ли какие-либо руководства по профилированию памяти Python?
Также, как упоминалось, есть несколько вещей, которые затруднят переход на mod_wsgi, поэтому я хотел бы иметь некоторое представление о преимуществах, которые я мог ожидать, прежде чем вспахивать вперед в этом направлении.
Изменить: Карл опубликовал немного более подробный ответ здесь, который стоит прочитать: Развертывание Django: сокращение расходов на Apache
Изменить: Статья Грэма Дамплтона - это лучшее, что я нашел в материалах MPM и mod_wsgi. Я довольно разочарован тем, что никто не может предоставить какую-либо информацию об отладке использования памяти в самом приложении.
Final Edit: Хорошо, я обсуждал это с Webfaction, чтобы узнать, могут ли они помочь с перекомпиляцией Apache, и это их слово в этом вопросе:
"Я действительно не думаю, что вы получите большую пользу, переключившись на настройку MPM Worker + mod_wsgi. Полагаю, что вы сможете сэкономить около 20 МБ, но, вероятно, не намного больше".
Итак! Это возвращает меня к моему первоначальному вопросу (о котором я все еще не думаю об этом). Как можно определить, где проблемы? Это хорошо известный принцип, который вы не оптимизируете без тестирования, чтобы увидеть, где вам нужно оптимизировать, но очень мало способов обучения использованию памяти Python и вообще не характерно для Django.
Спасибо за помощь всем, но я думаю, что этот вопрос все еще открыт!
Другое окончательное редактирование; -)
Я спросил об этом в списке пользователей django и получил очень полезные ответы
Честно последнее обновление!
Это только что было выпущено. Может быть лучшим решением: Профилирование размера объекта Django и использования памяти с помощью Pympler