Frage

Ich habe einen Python-Prozess (Pylone Webapp), die ständig 10-30% der CPU verwendet. Ich werde / Melodie Protokollierung zu verbessern, um einen Einblick von dem, was los ist, aber bis dahin gibt es irgendwelche Werkzeuge / Techniken, die sehen lassen, was Python Prozess tut, wie viele und wie beschäftigt Fäden hat etc?

Update:

  • konfigurierte Zugriffsprotokoll, das zeigt, dass es keine Anforderungen sind im Gang, Webapp nur im Leerlauf
  • Stecker keinen Punkt in paste.profile in Middleware-Kette, da es keine Anfragen sind, Aktivität geschieht, müssen entweder in Webapp der Worker-Threads oder Paster Web-Server
  • läuft Paster wie folgt aus: "python -m cProfile -o outfile / usr / bin / Paster dienen dev.ini" und Ergebnisse zeigt, Inspektion, dass die meisten Zeit in "posix.waitpid" ausgegeben wird. Paster läuft Webapp in subprocess wird subprocess Aktivität nicht durch Profiler aufgenommen
  • Blick in; Hacking PasteScript Befehl "dienen", so dass Subprozesse würde Profil bekommen

Ein weiteres Update:

Nach langem Tüfteln, Profiler an verschiedenen Orten und die Vertrautheit mit PasteScript Innenseiten kleben, entdeckte ich, dass die konstante CPU-Last geht weg, wenn die Anwendung ohne „--reload“ Parameter gestartet wird (dieses Flag sagt Paster selbst neu starten, wenn Code-Änderungen in der Entwicklung, praktisch), die in der Produktionsumgebung in Ordnung ist.

War es hilfreich?

Lösung

Profilierungs könnten Sie ein bisschen lernen, helfen, was es tut. Wenn Ihre Art die Ausgabe von „Zeit“ werden Sie sehen, welche Funktionen CPU-Zeit chowing auf, die Sie sollten ein paar gute Tipps geben.

Andere Tipps

Wie Sie bemerkt, in --reload Modus, Einfügen fegt das Dateisystem jede Sekunde, um zu sehen, wenn eine der geladenen Dateien geändert haben. Wenn sie haben, dann neu geladen Paste den Prozess. Sie können manuell sagen, auch nicht-Python-Code-Module für Änderungen überwachen einfügen, falls gewünscht.

Sie können mit der --reload-Intervall Option, um das Reload-Intervall ändern, wird dies die CPU-Auslastung reduzieren, wenn mit --reload, da sie weniger oft fegen werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top