Werkzeuge für Analyse und Leistungssteigerung

PHP Profiler im Vergleich – Teil 4: Blackfire
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: Blackfire.

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 einem Fokus auf Xdebug in Teil 1, der Vorstellung von XHProf in Teil 2 und Teil 3 mit Z-Ray, widmen wir uns heute dem PHP Profiler Blackfire.

Blackfire

SensioLabs veröffentlichte im Dezember vergangenen Jahres die erste öffentliche Betaversion des SaaS-(Software-as-a-Service-)Produkts Blackfire. Mittlerweile basiert dieser Profiler nicht mehr, wie ein weit verbreiteter Irrtum besagt, auf einer Erweiterung des XHProf-Codes. Stattdessen wurde der Code komplett neu geschrieben, um den Overhead deutlich zu reduzieren und die Codestruktur erweiterbar zu gestalten. Die Installation erfolgt in leicht verständlichen Anweisungen für die gängigen Plattformen. Natürlich darf heutzutage auch kein Docker Image fehlen.

Mit der Google-Chrome-Browser-Extension Blackfire Companion wird das Profiling verwaltet. Ein interessantes Feature ist die Aggregation mehrerer Profile, wodurch nicht relevante Daten automatisch im interaktiven Call Graph ausgeblendet werden. Eine automatische Erkennung von allgemeinen Performanceproblemen ist mit dabei. Sie sind auf der Profile-Seite prominent dargestellt. Analysen können miteinander verglichen und deren Entwicklung kann überwacht werden. Das Hochladen vorhandener Aufzeichnungen von anderen Profilern wie XHProf, Xdebug oder ein callgrind-kompatibles Profil ist möglich. Es wird sogar ein eigenes Blackfire-Format angeboten. Somit kann man auch andere Programmiersprachen analysieren. Eine Toolbar oben auf der Seite zeigt eine Zusammenfassung der Profile-Informationen an und enthält einen Link direkt zu den Analyseergebnissen (Abb. 2).

Abb. 2: Blackfire-Profiler

Abb. 2: Blackfire-Profiler

Neben Standardinformationen zu Callees, Callers, Anzahl der Funktionsaufrufe, Speicherverbrauch, CPU-, Netzwerk- und I/O-Zeit sind auch Informationen über den PHP Garbage Collector vorhanden. Die Anzeige von PHP-Fehlern wird nicht unterstützt, dafür wird jedoch auch in der kostenlosen Version die Anzahl der Datenbankabfragen und dazugehörigen Treiber erkannt. Das Aufzeichnen von Events ist nicht möglich. Analysen und Gegenüberstellungen kann man mit anderen teilen.

Neben der kostenlosen Version wird auch an einer Enterprise-Variante gearbeitet; Unternehmen können so z. B. Teamprofile erstellen. Dadurch lässt sich der Zugriff auf die Daten für bestimmte Personen einschränken und Analysen lassen sich privat freigeben. Ein weiteres wichtiges Feature in der kostenpflichtigen Variante ist die Darstellung von Datenbank-Queries inklusive der Zeit. Daneben werden in dieser Version auch HTTP-Aufrufe einschließlich der übertragenen Datenmenge angezeigt. Das Profiling kann sowohl für HTTP-Requests als auch für Web Services oder CLI-Skripte aktiviert werden. Sogar ein manuelles Profiling für einen bestimmten Codebereich ist über das Blackfire PHP SDK durchführbar. Sobald die Blackfire Extension geladen ist, steht es in den PHP-Skripten zur Verfügung. Leider kann man keine eigenen Erweiterungen erstellen. Da es sich um ein SaaS-Produkt handelt, befinden sich die Profiling-Daten nicht lokal, sondern auf den Blackfire-Servern. Die Übermittlung erfolgt verschlüsselt, und weder Sessiondaten noch der Quellcode werden übertragen. Datenbank-Queries und URLs werden vor der Übertragung anonymisiert, um sensible Daten zu schützen. Lediglich Methoden-, Klassen- und Dateinamen sind im Klartext vorhanden. Der Einsatz von Blackfire ist im Entwicklungs- und Produktivsystem möglich.

 

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: set of tools in tool box via Shutterstock / Urheberrecht: gresei

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -