New Relic APM ist ein leistungsfähiges Tool, das in das Innenleben einer WordPress-Webseite eindringt, um Plugins, Theme-Template-Dateien, Datenbankabfragen, externe Aufrufe oder programmierte Fehler aufzuspüren, die Leistungsprobleme auf deinen Webseiten verursachen.
Bei Kinsta können unsere Kunden ihre eigene New Relic-Lizenz hinzufügen, um in den Genuss der leistungsstarken Einblicke zu kommen, die dieses Tool bietet.
Wenn dein Hosting-Anbieter keine New Relic-Integration anbietet, kannst du sie selbst einrichten, wenn deine Seite in einer selbstverwalteten privaten Umgebung gehostet wird.
New Relic zum Laufen zu bringen ist jedoch nur der Anfang. Wenn ihr New Relic APM noch nie benutzt habt (und vielleicht sogar dann, wenn ihr es schon einmal benutzt habt), wird es euch schwer fallen, das Beste aus diesem mächtigen Werkzeug herauszuholen. In diesem Tutorial zeigen wir euch, wie ihr New Relic APM benutzt, um Performance-Probleme auf eurer WordPress Webseite zu diagnostizieren und zu beheben.
Bereit Nerdy zu werden? Dann lass uns loslegen!
Ein kurzer Überblick über New Relic APM
Was also ist New Relic APM? Für unsere Zwecke passt die folgende Definition:
New Relic APM ist eine Webanwendung, die detaillierte Informationen über die Leistung Ihrer WordPress Seite liefert.
Sie installieren New Relic, indem Sie eine Erweiterung zu PHP hinzufügen. Diese Erweiterung liest jede von PHP verarbeitete Anfrage mit und sendet die entsprechenden Informationen an das New Relic Dashboard. New Relic organisiert diese Informationen dann in einer Reihe von Diagrammen und Grafiken, mit denen Sie Leistungsstörungen Ihrer Webseite diagnostizieren können. Es ist wichtig zu beachten, dass New Relic auf HHVM nicht unterstützt wird.
Lassen Sie uns die primären Datenvisualisierungen von New Relic etwas näher betrachten.
Überblick
Die Registerkarte Übersicht bietet Ihnen auf einen Blick eine Zusammenfassung über die Gesamtleistung Ihrer Webseite. Sie werden auf diesem Bildschirm keine spezifischen Probleme diagnostizieren können, dennoch zeigt Ihnen die praktische Aufstellung, wie PHP, MySQL und externe Aufrufe zusammenarbeiten, was Sie in die richtige Richtung bei der Fehlersuche deuten kann.
Erfahren Sie mehr über die APM Übersichtsseite
Transaktionen
Die Transaktionen Registerkarte ist die nützlichste Registerkarte in New Relic.
Sie werden die Registerkarte Transaktionen lieben, wenn Sie lernen wie Sie Transaktionen einzeln aufschlüsseln können, um einzelne Datenbankabfragen, externe Ressourcen oder Code-Bottlenecks zu identifizieren, die Ihre Webseite verlangsamen. Von besonderem Interesse innerhalb der Transaktionsansicht ist die Auflistung der langsamen Transaktionen. Um die Liste sehen zu können, scrollen Sie auf der Registerkarte Transaktionen nach unten. Dort finden Sie die Aufstellung im unteren rechten Teil der Seite.
Hier finden Sie eine Liste der langsamsten Transaktionen, die von New Relic erfasst wurden. Für den Moment sollte uns das zu der Transaktion Registerkarte genügen. Später werden wir genauer erklären, wie man diesen Abschnitt benutzt, um Probleme auf Ihrer Webseite zu diagnostizieren.
Erfahren Sie mehr über die APM Transaktionen Seite von New Relic.
WordPress Hooks
Die Registerkarte WordPress Hooks zeigt die benötigte Zeit aller PHP-Funktionen, die über WordPress Action Hooks ausgelöst werden. Diese Informationen können für erfahrene Entwickler nützlich sein, um von einem überlasteten Hook aus rekursiv zu ermitteln, welche Funktionen von dem Hook initiiert werden.
WordPress Plugins and Themes
Die Registerkarte WordPress Plugins und Themes zeigt Ihnen, wie viel PHP-Verarbeitungszeit verschiedene Plugins oder das aktive Design benötigen. Wenn ein einzelnes Plugin oder Ihr Webseitendesign überproportional viel Zeit in Anspruch nimmt, kann diese Seite Ihnen helfen, das Plugin oder das Design schnell zu identifizieren, das Probleme verursacht.
Hier ist Vorsicht geboten: Die WordPress Plugin und Themes Registerkarte in New Relic führt am häufigsten zu Missverständnissen.
Bei der Problemsuche auf einer Webseite kann es verlockend sein, zuerst die Registerkarte Plugins und Themes aufzurufen und einfach das zeitaufwändigste Plugin zu deaktivieren. Dies bedeutet jedoch, wertvollen Informationen zu ignorieren, die an anderer Stelle in New Relic zu finden sind. Das kommt einer Behandlung von Symptomen gleich, anstatt der Ursache des Problems auf den Grund zu gehen.
Plugins können beispielsweise aufgrund einer fehlerhaften Konfiguration langsam laufen, wie ein Plugin für Member Management, das aufgrund der Verwendung einer falschen SMTP-Portnummer langsam läuft. Ein anderer Grund könnte ein Plugin sein, das möglicherweise nicht korrekt deinstalliert wurde. Dies ist die Art von Informationen, die Sie über die Transaktions-Registerkarte erhalten können, wenn Sie eine langsame Transaktion dort genauer untersuchen. Sie werden also Ursachen nie beheben können, indem Sie einfach das langsamste Plugin deaktivieren, das Ihnen von New Relic über die aktuelle Registerkarte angezeigt wird.
Machen Sie sich also mit der Registerkarte Plugins und Themes vertraut, aber lassen Sie keinesfalls außer Acht was New Relic Ihnen sonst noch an Informationen bereitstellt.
Datenbanken
Auf der Registerkarte Datenbanken können Sie die Datenbanktabellen und Arten von Abfragen identifizieren, die am meisten Zeit in Anspruch nehmen. New Relic verknüpft die Informationen direkt mit denjenigen Transaktionen, die die entsprechenden Abfragen durchführen. Sie können diese Informationen verwenden, um Datenbanktabellen zu identifizieren, die optimiert werden müssen, oder Vorlagendateien, die eine übergroße Belastung für die Datenbank darstellen.
Externe Services
Die meisten WordPress Webseiten sind auf eine Reihe von externen Services von Drittanbietern angewiesen:
- Plugin-, Design- und Core-Updates werden von wordpress.org sowie von Plugin- und Designentwicklern bereitgestellt.
- Viele Plugins lassen sich in APIs von Drittanbietern integrieren, wie z.B. das Smush Image Optimization Plugin von WPMU DEV (smushpro.wpmudev.org aus dem Screenshot oben).
- Chat Plugins laufen in der Regel von externe Services von Drittanbietern.
- Viele Webseiten sind mit Social Media Plattformen verbunden, um eine optimale Darstellung und Leistung zu gewährleisten, wenn Inhalte über die Netzwerke geteilt werden.
Wenn eine dieser externen Dienstleistungen nicht zeitgerecht reagiert, kann dies dazu führen, dass Ihre gesamte Webseite zum Erliegen kommt.
Auf der Registerkarte Externe Services sehen Sie auf einen Blick, welche Externen Services am meisten Zeit verbrauchen. Sie können diese Informationen verwenden, um festzustellen, ob es sich um ein Problem der Geschwindigkeit (z.B. der Service reagiert langsam) oder der Menge (es gibt zu viele Anrufe an die externe Quelle) handelt, um auf die Lösung des Problems hinzuarbeiten.
Fehleranalyse
Die Registerkarte Fehleranalyse berichtet über PHP Fehler, die beim Laden Ihrer WordPress Seite aufgetreten sind. Die Fehler sind in Klassen aufgeteilt, so dass Sie schnell erkennen können, wie viele verschiedene Arten von Fehlern generiert werden. Die Fehler werden auch direkt mit der Transaktion verknüpft, die den Fehler verursacht hat. Wenn Sie einen bestimmten Fehler auswählen, sehen Sie auch eine vollständige Verlaufsanalyse der Transaktion, die den Fehler verursacht hat.
Betrachten Sie die Fehleranalyse als ein detailliertes PHP Fehlerprotokoll. Wenn es darum geht, die Datei zu finden, die den PHP Fehler erzeugt, oder die Transaktionen zu identifizieren, bei denen dieser Fehler aufgetreten ist, kann sich diese aber manchmal als unzuverlässig erweisen.
Debuggen von langsam ladendenden Seiten
Das häufigste Problem, mit dem unser Team mit New Relic debuggt, ist der Fall einer bestimmten Seite oder eines Prozesses, deren/dessen Laden außergewöhnlich lange dauert. Wenn dies der Fall ist, ist die Registerkarte Transaktionen in New Relic APM mit ziemlicher Sicherheit die richtige Anlaufstelle.
Der Prozess, dem Sie folgen müssen, um eine langsam ladende Seite zu diagnostizieren, ist ziemlich simpel:
- Duplizieren Sie die langsame Transaktion.
- Suchen Sie die Transaktion in der Liste der langsamen Transaktionen in New Relic.
- Überprüfen Sie die Transaktionsübersicht und analysieren Sie die Details, um die Ursache für die langsame Performance zu ermitteln.
Schauen wir uns ein Beispiel an wie New Relic verwendet werden kann, um das Problem zu diagnostizieren.
Schritt 1: Duplizieren der Transaktion
Schauen wir uns ein Beispiel an. In diesem Beispiel sieht unser Kunde, dass die Webseite langsam lädt – jedes Mal, wenn ein einzelner Blogbeitrag geladen wird. Alle anderen Seiten werden normal geladen, während das Laden einzelner Beiträge einige Sekunden dauert.
Der erste Schritt besteht also darin, das Problem zu duplizieren. In diesem Fall bedeutet dies, dass Sie einen einzelnen Blogbeitrag mehrmals aufrufen müssen, um sicherzustellen, dass New Relic das Datum richtig erfasst.
Hinweis: Wenn Ihre Webseite das Page Caching verwendet, das z.B. in unsere Plattform hier bei Kinsta integriert ist, müssen Sie das Cache zwischen den einzelnen Seitenaufrufen leeren. Andernfalls wird die Seite aus dem Cache geladen anstatt von WordPress generiert zu werden.
Schritt 2: Finden Sie die langsame Transaktion.
Nachdem Sie die langsame Transaktion ein paar Mal dupliziert haben, gehen Sie zu New Relic und wählen Sie die Transaktionen Registerkarte. Scrollen Sie dann nach unten, um die Liste der langsamen Transaktionen im New Relic Dashboard zu sehen.
Wählen Sie die Transaktion aus, die Sie debuggen wollen, um Details zu sehen.
Schritt 3: Überprüfung der Transaktionsübersicht und der Trace-Details
Sobald Sie die Transaktion ausgewählt haben, wird Ihnen eine Zusammenfassung der Transaktion angezeigt.
Die Zusammenfassung gibt Ihnen eine Übersicht der Komponenten, die zur Verarbeitungszeit der Transaktion beigetragen haben. In unserem Beispiel ist der Aufruf einer externen Ressource, www.googleapis.com, für 5.000 Millisekunden einer Transaktion verantwortlich, die insgesamt 5.350 Millisekunden dauert.
Dies sind zwar nützliche Informationen, aber die Registerkarte Trace Details enthält die Details, die wir benötigen, um genau zu sehen, was hier passiert.
Die Registerkarte Trace Details bietet ein Schritt-für-Schritt Wasserfall Diagramm, das die einzelnen Funktionen, Datenbankabfragen und externe Aufrufe zeigt, die PHP beim Generieren der Seite durchläuft.
Im Falle unserer Beispieltransaktion zeigt sich in den Trace Details, dass ein Aufruf einer Google Analytics-URL den Prozess verlangsamt. Wenn wir von diesem Request rückwärts arbeiten, wird eine PHP Funktion namens gapp_get_post_pageviews
ausgelöst. Eine schnelle Google Suche nach dieser Transaktion zeigt, dass sie Teil des Google Analytics Post Pageviews Plugins ist. Dieses Plugin ist auf der Webseite installiert und dient dazu, einen Ansichtszähler zu einer festen Kopfleiste hinzuzufügen.
New Relic hat es uns gerade ermöglicht, den Ansichtszähler in der festen Kopfleiste als primäre Komponente zu isolieren, die zum langsamen Laden einzelner Blog-Posts auf der betreffenden Webseite führt. Jetzt weiß der Besitzer dieser Seite genau, welche Komponente er adressieren muss, um das Problem der langsam ladenden einzelnen Blog-Posts zu lösen.
Behebung der allgemeinen Verzögerung
Das zweithäufigste Problem, das wir für unseren Kunden lösen, ist, dass die gesamte Webseite langsam lädt. Wenn jede Transaktion viel Zeit zum Laden benötigt, liegt wahrscheinlich eine der drei Ursachen vor:
- Die Webseite verfügt über nicht genug Server-Ressourcen.
- Ein Plugin oder das aktive Design verursacht Probleme.
- Die Datenbank hat Mühe, mit einer hohen Rate an Anfragen Schritt zu halten.
Bei Kinsta sind Probleme mit den Server-Ressourcen selten, da unsere skalierbaren virtuellen Maschinen in der Lage sind, unterschiedliche Mengen an Last zu bewältigen. Wenn die Webseite jedoch nicht über ausreichend CPU oder RAM verfügt, kann dies zu einer allgemeinen Langsamkeit führen, die New Relic nicht einzelnen Ressourcen zuordnen kann. Wenn Sie also eine allgemeine Langsamkeit sehen und New Relic anzeigt, dass jeder Teil der Webseite seinen Beitrag dazu leistet, überprüfen Sie die Auslastung Ihres Servers, um zu sehen, ob möglicherweise ein Mangel an Serverressourcen die Ursache dafür ist.
Wenn Ihre Webseite Zugriff auf ausreichend Server-Ressourcen zugreifen kann, dann ist das Nächste, was Sie überprüfen sollten, um die allgemeine Langsamkeit zu diagnostizieren, die Registerkarte WordPress Plugins und Themen, die Registerkarte Externe Dienste und die Registerkarte Datenbanken.
Hier sind Beispiele für die allgemeine Langsamkeit, die mit jeder dieser Registerkarten diagnostiziert werden kann.
Gesamtverzögerung verursacht durch ein Plugin
Wenn ein Plugin eine allgemeine Verlangsamung verursacht, variieren die Symptome je nach der Aktivität, die das Plugin ausführt. In vielen Fällen wirst du jedoch feststellen, dass sich ein langsames Plugin auf jede Seite einer WordPress Webseite auswirkt. Im Fall der Webseite, deren Daten du in der Abbildung unten siehst, wurde die allgemeine Verlangsamung auf jeder Startseite der Webseite beobachtet.
Hier ist, was New Relic über die Leistung der Plugins auf der Webseite zu sagen hatte.
Sofort sehen Sie, dass das Adinjektor-Plugin mehr als das 15-fache der Zeit verbraucht, als das nächst langsamere Plugin.
Wenn Sie solche Daten vorfinden, kann es verlockend sein, das Plugin sofort als schlecht kodiert oder anderweitig ineffektiv abzustempeln. Obwohl dies manchmal der Fall sein kann, ist es nicht immer der Fall. Fehlkonfiguration des Plugins, Langsamkeit der Datenbank oder externe Ressourcen, die nur langsam reagieren, können dazu führen, dass ein Plugin viel Zeit in Anspruch nimmt.
Wenn Sie also ein Plugin sehen, das langsam reagiert, ist es eine gute Idee, mehrere andere Bildschirme in New Relic zu überprüfen, um zusätzliche Informationen zu erhalten. Die Registerkarten Transaktionen, Datenbanken und externe Ressourcen sollten alle überprüft werden, bevor Sie zu dem Schluss kommen, dass die Deaktivierung des Plugins der beste oder einzige Weg ist.
Gesamtverzögerung durch externe Dienstleistungen
Wenn eine Webseite auf einen Aufruf eines externen Services angewiesen ist, um Seitenaufrufe zu generieren, und dieser Service nicht mehr reagiert oder lange Zeit benötigt, kann das Ergebnis eine WordPress-Website sein, die insgesamt nicht mehr lädt.
Das obige Bild stammt von der gleichen Webseite, die das Problem mit einem langsamen Plugin zu haben scheint. Wie Sie sehen, gibt es einen einzelnen externen Service, der einen übergroßen Anteil an der gesamten Ladedauer für externe Services hat.
Dieser Fall zeigt, warum es notwendig ist, Informationen in Kombination zu betrachten, bevor man zu einem Ergebnis kommt. Der in diesem Fall aufgerufene Service ist der Entwickler des im letzten Schritt identifizierten Plugins.
Diese Informationen geben der Situation eine gewisse Nuance. Es ist nicht der Code des Plugins, der das Problem ist, zum Beispiel. Stattdessen sieht es so aus, als ob das Plugin viele Aufrufe auf der Website des Entwicklers macht und diese Aufrufe, in Kombination betrachtet, viel Verarbeitungszeit in Anspruch nehmen.
Wenn wir uns nun die langsame Transaktion für diese Seite genauer ansehen, können wir feststellen, dass der Lizenzstatus des betreffenden Plugins überprüft zu werden scheint, was darauf hindeutet, dass die Lizenz für dieses spezielle Plugin abgelaufen sein könnte. Auf jeden Fall können wir den Eigentümer dieser Webseite nun darüber informieren, dass das Adinjector-Plugin die langsame Leistung verursacht, und die langsame Leistung ist auf wiederholte Aufrufe der Entwickler-Webseite zurückzuführen, die den Status der Plugin-Lizenz überprüfen.
Gesamte Verzögerungen verursacht durch eine überforderte Datenbank
Eine nicht optimierte Datenbank kann zu einer allgemeinen Langsamkeit auf einer WordPress-Seite führen. Eine Optimierung, die wir immer empfehlen, ist die Umstellung Ihrer Datenbank von MyISAM auf InnoDB. In New Relic wird diese datenbankbezogene Langsamkeit höchstwahrscheinlich an zwei Stellen auftreten:
- Zuerst sehen Sie in der Übersicht eine übergroße Menge an MySQL-Aktivität.
- Zweitens sehen Sie eine oder mehrere Datenbanktabellen, die viel Zeit in der Registerkarte Datenbanken verbrauchen.
Ausgehend vom Übersichtsbildschirm könnte eine Webseite mit einer Datenbank mit Optimierungsbedarf etwa so aussehen:
Um einen besseren Überblick darüber zu bekommen, welche Datenbanktabelle oder Abfrage das Problem verursacht, gehen Sie zur Registerkarte Datenbanken.
Die Registerkarte Datenbanken zeigt die Tabelle und die Art der Abfrage an, die am meisten Zeit in Anspruch nimmt. Wenn Sie einen der Einträge in der Liste auswählen, erhalten Sie weitere Details, einschließlich einiger Beispielabfragen.
In diesem Fall deuten die Daten auf automatisch geladene Daten in der Tabelle wp_options. Eine erste Analyse der Tabelle wp_options bestätigt, dass fast 250 MB Daten aus dieser Tabelle automatisch geladen werden, was diese Webseite zu einem offensichtlichen Kandidaten für eine Wartung bzw. Optimierung macht. Schauen Sie sich unseren ausführlicheren Beitrag an, wie Sie die Tabelle wp_options und die automatisch geladenen Daten optimieren können.
Fangen Sie jetzt mit dem Debuggen an!
Sobald Sie wissen, wie Sie es nutzen, kann New Relic ein wertvolles Tool sein, um PHP Performance-Engpässe auf Ihrer WordPress Webseite zu identifizieren. Um das Beste aus New Relic herauszuholen, ist es wichtig, dass Sie WordPress kennen, die Informationen verstehen, die Ihnen die einzelnen Registerkarten liefern und erkennen, wie alle Informationen miteinander verbunden sind.
Wir haben eine weitere interessante Fallstudie zu diesem Thema, die Sie sich unbedingt ansehen sollten: Debuggen von WordPress Performance-Problemen – Stuff Happens Checkliste
Haben Sie irgendwelche neuen Relic WordPress Tipps? Wir würden uns freuen, sie unten in den Kommentaren zu hören.
Schreibe einen Kommentar