Jedes Plugin, das Sie Ihrer WordPress-Seite hinzufügen, braucht zusätzliche Ausführungszeit und Datenbankabfragen. In diesem Tutorial erklären wir Ihnen, wie Sie überprüfen, woher die Ausführungszeit kommt. Mit diesen Informationen können Sie und Ihr WPML-Support-Team Engpässe finden und die Leistung Ihrer Seite verbessern.

Installation und Aktivierung des Debug Objects-Plugins

Wir werden das Plugin Debug Objects benutzen, um die Datenbankabfragen zu sehen und verstehen, die zur Darstellung Ihrer Seite nötig sind. Debug Objects zeigt eine detaillierte Aufschlüsselung der Abfragen an, die auf jeder Einzelseite der Seite ausgeführt werden. Diese Ausgabe ist nur für Sie sichtbar, wenn Sie als Admin eingeloggt sind. Besucher sehen die Informationen zur Fehlerbehebung nicht.

Um das Plugin zu installieren, gehen Sie ins WordPress-Dashboard und wählen Sie im linken Menü Plugins und dann Neues hinzufügen aus. Geben Sie ins Suchfeld „debug objects“ ein und drücken Sie auf die Eingabe-Taste.

Klicken Sie auf dem Suchergebnisse-Bildschirm auf den Button Jetzt installieren:

Installation des Debug Objects-Plugins
Installation des Debug Objects-Plugins

Wenn die Installation abgeschlossen ist, aktivieren Sie das Plugin.

Alternativ können Sie Debug Objects direkt aus dem WordPress-Repository herunterladen und in wp-content/plugins auf Ihren Server hochladen. Aktivieren Sie es dann über die Plugins-Seite in Ihrem WordPress-Adminbereich.

Deaktivieren von Xdebug

Wenn Sie nicht wissen, was Xdebug ist, können Sie diesen Abschnitt gern überspringen. Wenn Sie Xdebug benutzen, deaktivieren Sie es bitte unbedingt, bevor Sie Leistungstests durchführen. Xdebug belastet Ihren Server stark und verfälscht alle Ergebnisse. Hier erfahren Sie, wie Sie Xdebug deaktivieren.

Konfiguration von Debug Objects zur Analyse von SQL-Abfragen

Fügen Sie bitte als erstes Ihrer Datei wp-config.php diese Zeile hinzu (diese Datei finden Sie in dem Hauptverzeichnis, in dem Ihr WordPress installiert ist):

define( 'SAVEQUERIES', TRUE );

Gehen Sie nun auf Werkzeuge -> Debug Objects und deaktivieren Sie alle anderen Optionen außer DB-Abfrage:

Konfiguration von Debug Objects
Konfiguration von Debug Objects

Scrollen Sie bis nach unten auf dem Bildschirm und klicken Sie auf den Speichern-Button.

Prüfen der Fehlerbehebungs-Ausgabe

Nachdem Sie das Plugin aktiviert und korrekt konfiguriert haben, können wir mit der Fehlerbehebung beginnen. Während Sie als WordPress-Administrator eingeloggt sind, besuchen Sie bitte Seiten, bei denen Sie das Gefühl haben, dass Ihre Seite zu langsam läuft (wenn dies bei vielen Seiten der Fall ist, wählen Sie eine, die am langsamsten zu sein scheint) und klicken Sie auf den Objects-Link oben in der Admin-Menü-Leiste:

Debug Objects-Link ist für Sie bereit
Debug Objects-Link ist für Sie bereit

Sie sehen drei Register mit den Informationen zur Fehlerbehebung:

Debug Objects-Ausgabe in drei Registern
Debug Objects-Ausgabe in drei Registern

So lesen und verstehen Sie die Fehlerbehebungsausgabe

In diesen drei Tabellen sehen Sie viele Daten, aber nur ein Teil davon ist für uns wichtig und für das WPML-Plugin relevant. Allgemein gesagt interessieren wir uns für zwei Dinge:

  • Sehr langsame Abfragen – manchmal ist ein Leistungsproblem zum Großteil Ergebnis einiger weniger Anfragen, deren Verarbeitung zu lange dauert
  • Viele sich wiederholende Abfragen – in anderen Fällen gibt es keine sehr langsamen Abfragen, sondern viele schnelle Abfragen, deren Ausführung insgesamt lange dauert

Finden langsamer Abfragen

Gehen Sie ins erste Register mit dem Namen DB-Abfragen und suchen Sie nach den langsamsten Abfragen. Das Plugin Debug Objects hilft Ihnen dabei, indem es Abfragen, die länger als 0,5 ms dauern, mit einem orange-farbenen Rahmen hervorhebt:

Langsame Abfragen
Langsame Abfragen

Unter dem Abfrage-String sehen Sie den Namen der Funktion, die die Abfrage ausgeführt hat. Dies kann jedoch irreführend sein, da dieses Register nur die letzte Funktion aus dem gesamten Ausführungsstapel zeigt und wir nicht wissen, ob sie vom WordPress-Kern oder von anderen Plugins stammt (oder von welchem Plugin).

Prüfen Sie, ob die Anfrage vom WPML-Plugin kam

Kopieren Sie die langsame Abfrage (Strg + C) in das zweite Register namens Plugin-DB-Abfragen. Sie sehen einige Tabellen mit Abfragen, die nach den Plugin-Namen und den Plugin-Dateien geordnet sind, durch die die Abfragen gehen. Wenn das WPML-Plugin an der Ausführung dieser Abfrage beteiligt war, sollte es in der entsprechenden Tabelle aufgeführt werden.

Drücken Sie auf Ihrer Tastatur Strg + F und dann Strg + V, um die kopierte Abfrage einzufügen.

Dies wird eine Suche nach jedem Auftreten der ausgewählten Abfrage in der Tabelle starten. Wahrscheinlich werden Sie mehr als ein Ergebnis sehen. Um zwischen diesen zu wechseln, drücken Sie die F3-Taste.

Prüfen Sie für jedes Suchergebnis, ob es sich in der Tabelle unter einem der WPML-Plugins befindet. Wenn dies zutrifft, notieren Sie Folgendes:

  • den Plugin-Namen
  • die Datei, in der die Abfrage ausgeführt wurde
  • die Nummer der Zeile in dieser Datei (erste Spalte in der Tabelle)

Abfrage-Details
Abfrage-Details

Häufige Abfragen von WPML und anderen Plugins und Themes

Einige der Abfragen gehen nicht nur durch das WPML-Plugin, sondern auch durch andere Plugins und/oder Themes. Zum Beispiel bietet WPMLs String Translation Übersetzungsdienste für Strings, die sich im WordPress-Kern, dem Theme und allen anderen Plugins befinden. Wenn das String Translation-Plugin in der Liste der DB-Abfragen erscheint, bedeutet dies, dass WPML viele verschiedene Strings auf Ihrer Seite übersetzen muss.

In diesem Fall erscheint die Abfrage, die Sie als langsam ermittelt haben, im Plugin-DB-Abfragen-Register in der Tabelle unter unserem Plugin-Namen, aber auch in den nächsten Tabellen für die anderen Plugins oder im dritten Register: WP-Inhalts-DB-Abfragen. Bitte prüfen Sie dies, bevor Sie eine langsame Abfrage über unser Forum melden. Wenn Sie die gleiche Abfrage im dritten Register finden, notieren Sie bitte den Namen der Datei aus dem dritten Register. So können wir feststellen, ob ein bestimmtes Theme an dieser langsamen Abfrage beteiligt ist, und herausfinden, welches Theme dies ist.

Meldung Ihrer Ergebnisse über WPMLs technisches Forum

Wenn Sie alle Daten bezüglich der langsamen Abfrage notiert haben, erstellen Sie bitte ein neues Ticket in unserem Forum und erklären Sie Ihr Problem. Bitte geben Sie in Ihrem Bericht Folgendes an:

  • Die Abfrage, die langsam ist, und wie lange es dauert, sie auszuführen.
  • Wo/ob Sie diese Abfrage im 2. Register des Fehlerbehebungsprotokolls finden. Ob sie sich im WPML-Plugin befindet, und wenn dies der Fall ist, welche Zeilen beteiligt sind und welche Zeilennummern diese haben.
  • Wo/ob Sie diese Abfrage im 3. Register finden können, sowie den Dateinamen und die Zeilennummer.

Bitte kopieren Sie den Inhalt jedes Registers und teilen Sie diesen über Pastebin mit uns.

Um dies zu tun:

  1. Gehen Sie in WPMLs technisches Support-Forum und starten Sie einen neuen Thread. Beschreiben Sie das bemerkte Leistungsproblem und wo wir es auch sehen können.
  2. Öffnen Sie das erste Register in den Ergebnissen von Debug Objects
  3. Wählen Sie die Inhalte dieses Registers aus. Achten Sie darauf, alles aus den ‚Abfragen‘ einzubeziehen, einschließlich den ‚Fehler‘-Abschnitt und die gesamte Liste der Abfragen.

    Wählen Sie alle Abfragen aus
    Wählen Sie alle Abfragen aus

  4. Kopieren (Strg + C) Sie Ihre Auswahl
  5. Gehen Sie auf pastebin.com und fügen Sie (Strg + V) Ihre Auswahl in den nächsten Bereich ein, drücken Sie dann den Einsenden-Button.

    Fügen Sie Ihre Auswahl in Pastebin ein
    Fügen Sie Ihre Auswahl in Pastebin ein

  6. Kopieren Sie die URL aus der Adresszeile Ihres Browsers.

    Kopieren Sie die Pastebin-URL
    Kopieren Sie die Pastebin-URL

  7. Fügen Sie die URL aus Pastebin in den Support-Thread ein
  8. Wiederholen Sie die Schritte 2-6 für die Inhalte der anderen beiden Register.

Jetzt wissen unsere Supporter, auf welche Seite Sie sich beziehen und welche Seite langsam lädt. Sie können eine vollständige Liste der Abfragen sehen, die laufen, und Ihnen helfen, die Ursache des Problems zu finden. Wenn diese in WPML liegt, finden wir eine Umgehung (und vielleicht in der kommenden Version eine Verbesserung). Wenn es am Theme oder an anderen Plugins liegt, sprechen wir mit den anderen Erstellern und tun unser Bestes, damit bei Ihnen alles reibungslos läuft.


Anhang: Deaktivieren von Xdebug

Xdebug ist eine PHP-Erweiterung, mit der Sie Fehler in Codes beheben können. Bei richtiger Anwendung hilft es Ihnen auch, die Quelle von Leistungsstörungen zu finden.

Während Xdebug läuft, steigt die Auslastung des Servers stark, da es das Geschehen in Echtzeit erfassen muss. Aus diesem Grund sollten Sie Xdebug NIE ausführen, wenn Sie Leistungs-Benchmarks machen. Wenn Xdebug läuft, während Sie die Leistung messen, erhalten Sie völlig falsche Zahlen. Der Großteil der gemeldeten Auslastung wird von Xdebug verursacht sein und nicht aufgrund des Codes, den Sie benchmarken wollen.

Um Leistungsfehler mit Xdebug korrekt zu beheben, müssen Sie ohne Xdebug messen, die Ergebnisse abrufen und dann die Quelle der Leistungsengpässe mit Xdebug ermitteln.

Xdebug könnte auf Ihrem Server laufen, selbst, wenn Sie seine Ausgabe nicht prüfen. Dies passiert häufig, wenn man Xdebug aktiviert, um wirkliche Fehlerbehebung zu betreiben und es dann geladen lässt und glaubt, es sei inaktiv.

Um sicherzustellen, dass es ausgeschaltet ist, sehen Sie sich die php()-Ausgabe an.

Xdebug wird in der phpinfo-Ausgabe angezeigt
Xdebug wird in der phpinfo-Ausgabe angezeigt (schlecht für Leistungs-Benchmarking)

Wenn Sie Xdebug ausschalten wollten, tun Sie dies durch Entfernen oder Auskommentieren in Ihrer php.ini oder Ihrer conf.d/xdebug.ini:

zend_extension=xdebug.so

entfernen Sie die obige Zeile, fügen Sie sie nicht hinzu!

So sollte phpinfo aussehen, wenn Xdebug nicht läuft:

phpinfo, wenn Xdebug nicht läuft (gut für Leistungs-Benchmarking)
phpinfo, wenn Xdebug nicht läuft (gut für Leistungs-Benchmarking)

Sobald dies keinen Hinweis auf Xdebug enthält, ist es definitiv ausgeschaltet.

Ob andere Abschnitte dieser phpinfo-Datei Hinweise auf Xdebug enthalten oder nicht, ist unwichtig, solange es nicht als oben als geladene Erweiterung angezeigt wird.