2011-11-21 18 views
6

Non ho mai eseguito la copertura del codice in Python, ma sto cercando qualcosa come GCC's gcov, che mi dice quante volte ogni linea viene eseguita, o Apple's Shark che fornisce una ripartizione gerarchica di quanto tempo ogni funzione sta prendendo .Profilo sul server live Django?

Il mio problema è che ho un server live che sta subendo un carico elevato, e non posso sapere dai registri che cosa sta causando. Vorrei aggiungere qualcosa alla mia istanza Django per monitorare quali linee sono le più calde e/o quali funzioni impiegano più tempo.

Questo è qualcosa come, ma non esattamente, la copertura del codice. Vorrei presentarlo a un server live running, preferibilmente senza modificare troppo.

Idee?

risposta

2
+1

Come si collega cProfile a un processo Django in esecuzione? – Joe

+0

Non è possibile collegare il profiler al processo in esecuzione. È necessario avviare il processo django da 'cProfile.py': http://docs.python.org/library/profile.html#instant-user-s-manual – catavaran

+0

Sì, la risposta era di giocherellare con i miei script di avvio e mettere questo in. Non molto invadente. Grazie! – Joe

1

Io uso questo modello: un thread del monitor scrive stacktraces in un file di log ogni 0,3 secondi. Dopo alcune ore posso vedere dove l'interprete passa la maggior parte del tempo. Essa non rallenta il mio server:

Live Profiling of Python Server