Profiling
Die Steigerung der Performance kann sehr schwierig sein. Es gibt jedoch eine Reihe von Werkzeugen, mit denen sich die Performance messen und die Flaschenhälse auffinden lassen.
- PTProfiler
erstellt Profile für Page Templates in Zope2. Für jeden TAL-Ausdruck wird die Zeit gemessen und eine Tabelle sortiert nach den benötigten Zeiten erstellt.
Um PTProfiler zu installieren können Sie einfach folgendes in Ihre buildout.cfg-Datei schreiben:
eggs = … Products.PTProfilerNachdem Sie das Buildout-Skript aufgerufen und die Instanz neu gestartet haben, können Sie an jeder Stelle Ihrer Instanz ein PTProfiler Viewer-Objekt hinzufügen und anschließend auf Enable klicken. Nun erhalten Sie eine Liste der Pfade aller aufgerufenen Page Templates und beim Klicken auf einen der Pfade auch die Zeiten für alle Aufrufe.
- Call Profiler
zeigt den Ablauf von DTML, ZSQL, ZPT, Python-Methoden und -Skripten an, wobei sowohl die absoluten als auch die relativen Zeiten ermittelt werden. Zum Installieren lässt sich in der buildout.cfg-Datei im Abschnitt [productdistros] als URL folgendes angegeben:
http://plone.org/products/callprofiler/releases/1.4-fixed/CallProfiler-1.4-fixed.tar.gz

Anschließend kann in /Control_Panel/CallProfiler angegeben werden, für welche Aufrufe ein Profil erstellt werden soll.
- ZopeProfiler
liefert sowohl Zope object call level- als auch Python function call level-Statistiken, z.B.:
167 function calls (160 primitive calls) in 5.229 CPU seconds Ordered by: internal time ncalls tottime percall cumtime percall filename:lineno(function) 1 2.927 2.927 2.960 2.960 document_view:0(__call__) 1 0.754 0.754 3.715 3.715 mysite:0(Request) 1 0.186 0.186 0.187 0.187 search_icon.gif:0(Request) 1 0.132 0.132 0.132 0.132 folder_icon.gif:0(Request) 1 0.080 0.080 0.080 0.080 file_icon.gif:0(Request) 1 0.076 0.076 0.076 0.076 member-cachekey9666.css:0(Request) 1 0.071 0.071 0.073 0.073 document_icon.gif:0(Request) ...Installieren lässt sich der ZopeProfiler durch die Angabe der URL im Abschnitt [productdistros] der buildout.cfg-Datei:
http://www.dieter.handshake.de/pyprojects/zope/ZopeProfiler.tgz
Eine Erläuterung der Tabelle finden Sie in The Python Profilers.
- hotshot
Python-Profiler, der für jede einzelne Funktion ein Profil ausgibt. Er kann einfach aufgerufen werden, z.B. mit:
./bin/instance test -pvvv --profile -m vs.registration
Dabei wird eine Liste der 50 zeitaufwendigsten Funktionen ausgegeben und eine Datei geschrieben wie z.B. myproject/tests_profile.bMAEin.prof. Diese Datei lässt sich editieren, z.B. mit:
$ python >>> from hotshot.stats import load >>> s = load('tests_profile.bMAEin.prof') s.print_stats('.*some_function.*')- profilehooks
Decorator für das Profiling einzelner Funktionen:
from profilehooks import profile @profile def my_function(args, etc): passDie Installation erfolgt einfach mit easy_install profilehooks.
Mit pydoc profilehooks erhalten Sie eine Liste aller verfügbaren Decorator-Optionen.
Weitere Informationen erhalten Sie in der profilehooks-Dokumentation
- ab
Apache HTTP-Server-Benchmarking-Werkzeug, das einfache Performance-Tests erlaubt.
Unter Debian und Ubuntu lässt sich ab installieren mit:
$ apt-get install apache2-utils
Anschließend kann es z.B. mit folgenden Optionen aufgerufen werden:
$ ab -n 100 -c 3 http://www.veit-schiele.de/
Damit wird 100-mal die Seite angefragt, wobei immer je 3 Anfragen gleichzeitig gestellt werden.
Um die jeweiligen Einstellungen zu testen, empfiehlt es sich, zunächst die einfache Plone-Site, dann mit CacheFu und schließlich mit Varnish zu testen.
Mehr über Apache Benchmark erfahren Sie mit:
$ ab -h
Beachten Sie, dass Apache Benchmark nur die angegebene URL prüft, nicht die gesamte Seite mit Bildern und CSS-Dateien.
- Apache JMeter
- Apache JMeter wurde entwickelt um Last und Performance von funktionalen Tests zu messen.
- FunkLoad
- Mit FunkLoad lassen sich ebenfalls Lasttests auf Basis von funktionalen Tests erstellen
- Firebug
Mit Firebug lässt sich der Traffic zwischen Ihrem Browser und der Website beobachten:

Dabei werden alle Requests zum Darstellen der gesamten Seite analysiert. Zudem kann man sich die Response Headers für jedes Objekt anzeigen lassen und so herausfinden, ob, von wem und in welchem Umfang tatsächlich gecached wird.
- YSlow
- analysiert Webseiten und teilt Ihnen mit, warum Ihre Seiten langsam dargestellt werden. YSlow ist ein Firefox Add-on, das in Firebug integriert ist.
- varnishstat
- Varnishstat erstellt kontinuierlich aktualisierte Statistiken einer laufenden varnishd-Instanz, wobei zwischen Hit und MISS unterschieden wird.

