Werkzeuge für Analyse und Leistungssteigerung

PHP Profiler im Vergleich – Teil 5: Tideways und eine Vergleichsmatrix
Kommentare

Profiler wie Xdebug oder Facebooks XHProf sind mächtige Werkzeuge. Letztes Jahr haben namhafte Firmen wie Qafoo, Zend und SensioLabs ihre eigenen Profiler veröffentlicht, die das Analysieren von PHP-Anwendungen revolutionieren sollten. Engpässe oder ineffizienter Code gehören somit der Vergangenheit an. Im Rahmen einer „PHP Profiler“-Woche nehmen wir dieser fünfteiligen Artikelserie fünf Profiler unter die Lupe, um herauszufinden, welcher Profiler den jeweiligen Bedürfnissen am nächsten kommt. Heute: Tideways und eine Vergleichsmatrix aller fünf Profiler.

Mit Profilern wird die Leistungsfähigkeit von PHP-Anwendungen analysiert. So lassen sich z. B. SQL-Abfragen in einer Schleife oder ein nicht aktiver Cache schnell aufspüren. Nach einer Einführung und der Vorstellung der PHP Profiler, XHProf, Z-Ray und Blackfire bildet heute Tideways sowie eine hilfreiche Vergleichsmatrix den krönenden Abschluss unserer PHP-Profiler-Woche.

Tideways

Im März dieses Jahres wurde der Qafoo Profiler zu Tideways umbenannt, ein neuer Name, der an die Gezeiten der Nordsee angelehnt ist. Nachdem im Juni 2014 die geschlossene Betaphase startete, ist sie seit Oktober auch für die Öffentlichkeit freigegeben. Dieser Profiler basiert auf der XHProf-Extension, die durch Qafoo massiv weiterentwickelt und verbessert wurde. Auch hier erfolgt die Installation in wenigen Schritten für die gängigen Plattformen; zudem gibt es eine Google-Chrome-Browser-Extension für die Profilverwaltung. Durch die Auto-Start-Profiler-Extension lässt sich das Profiling starten, ohne den Code zu modifizieren. Tideways fasst individuelle Requests derselben Seite oder eines Seitentyps zu einer Transaktion zusammen. Damit lassen sich u. a. die maximale und die minimale Antwortzeit der Seite bestimmen (Abb. 3). Interessant ist auch die automatische Bottleneck-Erkennung – z. B. für langsame Datenbank-Queries oder zu viele HTTP-Requests. Wöchentlich wird auch ein Performancereport verschickt.

Abb. 3: Nutzung von Tideways

Abb. 3: Nutzung von Tideways

Auch hier finden sich wieder Informationen zu Callees, Callers, Anzahl der Funktionsaufrufe, Speicherverbrauch, CPU-, Datenbank- und Netzwerkzeit. Zusätzlich stehen verschiedene grafische Tools zur Verfügung. Neben einem verbesserten Call Graph – basierend auf den Libraries d3.js und dagre – stehen noch Histogramme für die Response-Zeit sowie eine Timeline zur Verfügung. Letztere soll Ereignisse in Zeitspannen zusammenfassen und somit einen besseren Einblick geben. Im übersichtlichen Dashboard finden sich auch PHP Fatal Errors und Uncaught Exceptions. Jede Analyse kann man mit dem Durchschnitt, den langsamsten Transaktionen oder der letzten Analyse derselben Transaktion vergleichen. Über ein REST-API lassen sich Events auslösen. Dadurch ist es möglich, wichtige Ereignisse wie TV Spots oder Deployments in die Analyse mit einzubeziehen. Im Layer Profiling Mode sind verschiedene Daten aus mehreren Requests zusammengefasst. Es gibt keine kostenlose Version, dafür stehen drei unterschiedliche Pläne und eine 30-tägige Testphase zur Verfügung. Das Profiling kann sowohl für HTTP-Requests als auch für Web Services oder CLI-Skripte aktiviert werden. Manuelle Benchmarks sind ebenfalls über das Tideways PHP SDK realisierbar. Über das XML-Extension-Format sind eigene Erweiterungen möglich. Für die gängigen Frameworks und Applikationen sind bereits Extensions verfügbar. Bei diesem SaaS-Produkt befinden sich die Daten auf den Tideways-Servern in Deutschland, die Übermittlung erfolgt verschlüsselt und es wird eine Zusammenfassung der Argumente von Datenbankabfragen – niemals die gesamten Query-, Methoden-, Klassen- und Dateinamen – übertragen. Der Quellcode wird natürlich nicht mitgesendet. Das Einsatzgebiet von Tideways sind das Entwicklungs- und Produktivsystem.

Vergleichsmatrix

Die folgende Vergleichsmatrix gibt einen Überblick über den Funktionsumfang der verschiedenen Profiler. Da jeder Profiler auch individuelle Features besitzt, empfiehlt es sich, die Dokumentation bzw. die Produktseiten der Profiler anzuschauen. Aufgrund der Komplexität dieser Matrix wurden Abkürzungen für die einzelnen Features verwendet. Am Ende von Tabelle 1 befindet sich eine Legende mit Erläuterungen zu den Abkürzungen.

Tabelle 1: PHP-Profiler-Vergleichsmatrix

Tabelle 1: PHP-Profiler-Vergleichsmatrix

Fazit

Nachdem jahrelang kaum ein Fortschritt in Sachen Profiler zu beobachten war, steht nun für jeden Anwendungsfall ein passender Profiler zur Verfügung. Jeder bietet individuelle Features und Analysemöglichkeiten, daher gibt es aufgrund der Komplexität dieses Gebiets keinen klaren Gewinner. Jeder muss selbst entscheiden, welcher Profiler am besten zu den eigenen Anforderungen passt. Wird ein Call Graph benötigt, so kommt Z-Ray nicht in Frage, und die Entscheidung fällt zwischen Blackfire, Tideways, XHProf oder Xdebug. Möchte man aber in Echtzeit alle Profiling-Informationen auf der Seite sehen, dann ist Z-Ray genau der richtige Kandidat. Sind Event Monitoring oder eigene Extensions notwendig, so ist zwischen Tideways oder Z-Ray zu entscheiden. Sollen die Daten den eigenen Server nicht verlassen, dann fällt die Wahl auf Xdebug, XHProf oder Z-Ray. Alle Profiler unterstützen das Aufzeichnen von Nicht-Browser-Requests wie z. B. CLI-Skripte. Darf es allerdings nichts kosten, dann sind Tideways und Z-Ray aus dem Rennen.

SensioLabs, Qafoo und Zend werden definitiv ihre Profiler weiter ausbauen. Es bleibt also spannend, was die Firmen uns in den nächsten Monaten für Features präsentieren werden.

 

PHP Magazin

Entwickler MagazinDieser Artikel ist im PHP Magazin erschienen. Das PHP Magazin deckt ein breites Spektrum an Themen ab, die für die erfolgreiche Webentwicklung unerlässlich sind.

Natürlich können Sie das PHP Magazin über den entwickler.kiosk auch digital im Browser oder auf Ihren Android- und iOS-Devices lesen. In unserem Shop ist das Entwickler Magazin ferner im Abonnement oder als Einzelheft erhältlich.

Aufmacherbild: Vintage carpenter tools via Shutterstock / Urheberrecht: Shaiith

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -