Meu uso de memória aumenta com o tempo e reiniciar o Django não é bom para os usuários.
Não tenho certeza de como fazer o perfil do uso da memória, mas algumas dicas sobre como começar a medir seriam úteis.
Sinto que existem alguns passos simples que podem produzir grandes ganhos. Garantir que 'debug' esteja definido como 'False' é um óbvio óbvio.
Alguém pode sugerir outros? Quanta melhoria o cache teria em sites de baixo tráfego?
Nesse caso, estou executando o Apache 2.x com mod_python. Ouvi dizer que mod_wsgi é um pouco mais enxuto, mas seria complicado mudar nesse estágio, a menos que eu saiba que os ganhos seriam significativos.
Edit: Obrigado pelas dicas até agora. Alguma sugestão de como descobrir o que está consumindo a memória? Existem guias para criação de perfil de memória Python?
Além disso, como mencionado, há algumas coisas que tornarão difícil mudar para mod_wsgi, então eu gostaria de ter uma idéia dos ganhos que eu poderia esperar antes de avançar nessa direção.
Edit: Carl postou aqui uma resposta um pouco mais detalhada que vale a pena ler: Django Deployment: Cutting Overhead of Apache
Edit: O artigo de Graham Dumpleton é o melhor que eu encontrei no MPM e no mod_wsgi. Estou um pouco decepcionado que ninguém possa fornecer informações sobre a depuração do uso de memória no próprio aplicativo.
Edição final: Bem, eu tenho discutido isso com o Webfaction para ver se eles poderiam ajudar na recompilação do Apache e esta é a palavra deles sobre o assunto:
"Realmente não acho que você obterá muitos benefícios mudando para uma configuração MPM Worker + mod_wsgi. Estimo que você poderá economizar cerca de 20 MB, mas provavelmente não muito mais que isso."
Assim! Isso me leva de volta à minha pergunta original (sobre a qual ainda não sou o mais sábio). Como se identifica onde estão os problemas? É uma máxima bem conhecida que você não otimiza sem testar para ver onde precisa otimizar, mas há muito pouco no caminho de tutoriais sobre como medir o uso de memória Python e nenhum específico sobre o Django.
Obrigado pela ajuda de todos, mas acho que essa pergunta ainda está aberta!
Outra edição final ;-)
Eu perguntei isso na lista django-users e recebi algumas respostas muito úteis
Honestamente, a última atualização de sempre!
Isso acabou de ser lançado. Pode ser a melhor solução até o momento: criação de perfil do tamanho do objeto Django e uso de memória com o Pympler