PHP Performance Test mittels xdebug

0

Habt ihr euch schon einmal über lange Ladezeiten von Webseiten mit PHP gewundert und gefragt, warum eigentlich eine weiße Seite für ein paar Sekunden lädt und dann mit einem Mal die ganze Seite geladen ist? Die Ursachen dafür sind zwar zahlreicher, aber in jedem Fall lohnt sich ein Blick in die PHP Methoden, die beim Laden der Seite aufgerufen werden: wie lange dauert welcher Aufruf.

Für diesen Zweck gibt es xdebug. Es hängt sich in die Kommunikation zwischen Webserver und php-Dienst und analysiert, wie lange welcher Aufruf dauert. Allerdings wird dadurch bereits die Seite, die analysiert werden soll, merklich langsamer. Bei einem nginx, php-fpm Debian Setup auf eurem Server geht ihr wie folgt vor, wenn ihr es nicht lokal, sondern direkt in eurer Live-Umgebung testen wollt:

Zuerst das Paket php-xdebug installieren und danach php-fpm neu starten:

apt-get install php-xdebug
service php7.0-fpm restart

Als nächsten müssen wir dem jeweiligen php Listener sagen, dass er xdebug für den Prozess verwenden soll. Die php-Dateien, die analysiert werden sollen, müssen dem Inhaber dieses PHP Prozesses gehören. In der pool Konfiguration des zu analysierenden Listeners folgende Einträge hinzufügen /etc/php/7.0/fpm/pool.d:

php_admin_value[xdebug.profiler_enable] = 1
php_admin_value[xdebug.profiler_output_name] = xdebug-%R.%t.out

Es gibt zwar auch die Möglichkeit, das Verzeichnis zu wählen, in das xdebug die Datei schreiben soll, aber das hat bei mir nicht funktioniert, daher würde ich den Default-Wert lassen, was in den meisten Fällen das /tmp Verzeichnis ist.

Jetzt kurz php7.0-fpm durchstarten und dann wie gewohnt die Webseite besuchen. Im /tmp Verzeichnis werden nun mehrere Dateien angelegt. Diese haben eine spezielle Form und können nur von bestimmten Programmen analysiert werden. Daher diese Dateien auf den Desktop runterladen und dann für Windows z.B. QCacheGrind runterladen. Im Link oben ist die Dokumentation verlinkt, die euch pro Betriebssystem Programme auflistet. Es gibt auch einen Web-Analyzer.

Leave A Reply

Your email address will not be published.