Il mio utilizzo della memoria aumenta nel tempo e il riavvio di Django non è gentile con gli utenti.
Non sono sicuro di come profilare l'utilizzo della memoria, ma alcuni suggerimenti su come iniziare la misurazione sarebbero utili.
Ho la sensazione che ci siano alcuni semplici passaggi che potrebbero produrre grandi guadagni. Garantire che "debug" sia impostato su "False" è evidente.
Qualcuno può suggerire gli altri? Quanto miglioramento sarebbe la memorizzazione nella cache su siti a basso traffico?
In questo caso sto correndo sotto Apache 2.x con mod_python. Ho sentito che mod_wsgi è un po 'più snello, ma sarebbe difficile passare a questo punto se non so che i guadagni sarebbero significativi.
Modifica: grazie per i suggerimenti finora. Qualche suggerimento su come scoprire cosa sta esaurendo la memoria? Esistono guide alla profilazione della memoria di Python?
Inoltre, come detto, ci sono alcune cose che rendono difficile passare a mod_wsgi, quindi mi piacerebbe avere un'idea dei guadagni che potrei aspettarmi prima di andare avanti in quella direzione.
Modifica: Carl ha pubblicato qui una risposta un po 'più dettagliata che vale la pena leggere: Distribuzione di Django: tagliare le spese generali di Apache
Modifica: l'articolo di Graham Dumpleton è il migliore che ho trovato su cose relative a MPM e mod_wsgi. Sono piuttosto deluso dal fatto che nessuno possa fornire informazioni sul debug dell'utilizzo della memoria nell'app stessa.
Modifica finale: Beh, ne ho discusso con Webfaction per vedere se potevano aiutare a ricompilare Apache e questa è la loro parola sull'argomento:
"Non credo davvero che otterrai un grande vantaggio passando a una configurazione MPM Worker + mod_wsgi. Stimo che potresti essere in grado di risparmiare circa 20 MB, ma probabilmente non molto di più."
Così! Questo mi riporta alla mia domanda originale (di cui non sono ancora più saggio). Come si fa a identificare dove si trovano i problemi? È una massima ben nota che non si ottimizza senza test per vedere dove è necessario ottimizzare, ma c'è ben poco in termini di tutorial sulla misurazione dell'utilizzo della memoria di Python e niente di tutto specifico per Django.
Grazie per l'assistenza di tutti, ma penso che questa domanda sia ancora aperta!
Un'altra modifica finale ;-)
L'ho chiesto nella lista degli utenti di django e ho ricevuto delle risposte molto utili
Onestamente l'ultimo aggiornamento di sempre!
Questo è stato appena rilasciato. Potrebbe essere la soluzione migliore in assoluto: profilare le dimensioni degli oggetti Django e l'utilizzo della memoria con Pympler