Reduzindo o uso de memória do Django. Frutos mais baixos?
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 criar um 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 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.
Editar: Carl postou aqui uma resposta um pouco mais detalhada que vale a pena ler:Implantação do Django: cortando a sobrecarga do Apache
Editar: Artigo de Graham Dumpleton é o melhor que 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 do MPM Worker + mod_wsgi. Estimo que você poderá economizar cerca de 20 MB, mas provavelmente não muito mais que isso."Assim! Isso me traz 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 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 do 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 consegui algumasmuito respostas úteis
Honestamente, a última atualização de sempre!
Isso acabou de ser lançado. Pode ser a melhor solução ainda:Criação de perfil do tamanho do objeto Django e uso de memória com o Pympler