Conosci un modo efficiente per registrare l'utilizzo della memoria di un'applicazione django per richiesta?Come registrare l'utilizzo della memoria di un'applicazione Django per richiesta
Ho uno stack apache/mod_wsgi/django, che funziona normalmente bene, ma a volte un processo finisce per consumare molta memoria. I server finiscono per essere a corto di mem, scambiano molto e i servizi sono drasticamente rallentati.
Questa situazione è piuttosto difficile da risolvere perché non conosco quale richiesta debba essere incolpata per questo comportamento, non riesco a riprodurlo.
Mi piacerebbe avere qualcosa distribuito in produzione che registra l'utilizzo della memoria del processo prima e dopo ogni richiesta, con un sovraccarico minimo.
Prima di iniziare reinventare la ruota, fare la comunità dei miei compagni djangoists so Qualsiasi soluzione esistente per affrontare questo problema? Apprezzati, middleware, snippet o magari la configurazione del registro Apache apprezzata.
Quello che (credo) non ho bisogno è:
- una serie di dev-stage strumenti di profilazione/debug, ho già delle conoscenze e io li userei se sapessi cosa al profilo/debug, sembra un po 'troppo per essere sempre monitorato i servizi in esecuzione in produzione. Oltre a ciò, ciò che viene solitamente visualizzato da quei tol è un rapporto sull'uso del codice del frammento del codice in pezzi, sarebbe davvero utile solo individuare la richiesta difettosa.
- consigli generici su come ottimizzare l'utilizzo di mem di un'applicazione django, beh è sempre una buona lettura, ma l'idea qui è piuttosto «come rintracciare in modo efficiente le richieste che devono essere ottimizzate».
I miei risultati di ricerca più vicini:
- Django/WSGI - How to profile partial request? My profiling tools are per-request but app runs out of memory before then
- Django memory usage going up with every request
- Average php memory usage per request?
Forse questa opzione modwsgi 'maximum-requests = nnn' aiuterà. "Definisce un limite al numero di richieste che un processo daemon deve elaborare prima di essere arrestato e riavviato." – freestyler
@freestyler: sì, lo uso già, ma manca il punto. L'idea è di mettere in luce richieste difettose per correggerle effettivamente, non per disinfettare periodicamente il sistema (che potrebbe essere anche utile). Inoltre, una richiesta che consuma memoria potrebbe apparire presto dopo un riavvio, nessuna correlazione qui. – ddelemeny