Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Tools & Tips
Code

New Relic & JMeter - Perfektes Leistungstesten

by
Difficulty:IntermediateLength:LongLanguages:
This post is part of a series called Performance Monitoring With New Relic.
3 New Relic Power Features You Should Be Using Today
Using New Relic Custom Metrics to Monitor All the Things
Sponsored Content

This sponsored post features a product relevant to our readers while meeting our editorial guidelines for being objective and educational.

German (Deutsch) translation by Valentina (you can also view the original English article)

Im Anschluss an die großartigen einleitenden Artikel, die kürzlich bei Nettuts+ vorgestellt wurden, wird in diesem Artikel gezeigt, wie Sie New Relic auf die nächste Stufe bringen können.  Als Leistungsüberwachung-Werkzeug ist New Relic fantastisch, aber was ist mit den Leistungstesten, bevor Sie live gehen. Hier kommt JMeter ins Spiel.  In diesem Lernprogramm erfahren Sie, wie wir unsere Anwendung unter realistischer Last testen können und die Ausgabe von JMeter und New Relic kombinieren, um Ihnen ein Vertrauen in die Leistung Ihrer Anwendungen zu geben, bevor Sie sie in einer Produktionsumgebung veröffentlichen.

Gesponserter Inhalt

Dieser Inhalt wurde von NewRelic in Auftrag gegeben und wurde vom Tuts+ Team geschrieben und/oder bearbeitet. Unser Ziel mit gesponserten Inhalten ist es, relevante und objektive Tutorials, Fallstudien und inspirierende Interviews zu veröffentlichen, die unseren Lesern einen echten erzieherischen Wert bieten und die Erstellung nützlicherer Inhalte ermöglichen.

Warum bis zur Bereitstellung warten, um zu sehen, wie Ihre Anwendung mit dem realen Datenverkehr abschneiden wird Wenn es in Ihrem Code einen Engpass gibt, der die Benutzererfahrung beeinträchtigt, möchten Sie wirklich, dass der Code live geschaltet wird?  Was wäre, wenn wir diese Engpässe frühzeitig finden, die Leistung verbessern und unseren Endbenutzern beim ersten Mal eine großartige Anwendung bieten könnten, und das mit einem regelmäßigen Benchmarking fortsetzen.  JMeter und New Relic zusammen können Ihnen diese perfekte Leistungstestsuite bieten.


Demo-Anwendung

Bevor wir New Relic und JMeter einsetzen können, benötigen wir eine einfache App, um Leistungstests durchzuführen! Schreiben wir also eine einfache Ruby Sinatra-App, die einen Dienst enthält, den wir testen können.  Ich werde nicht zu viel auf die Erstellung dieser Anwendung eingehen, da Sie Sinatra in anderen Artikeln über Nettuts+ nachlesen können.

Die Anwendung wird ein wenig gefälscht, damit wir einige interessante Ergebnisse sehen können, die sich aus den verschiedenen Anwendungen ergeben. Wir werden einen Dienst schreiben, der eine ID annimmt, und abhängig von dieser ID wird entweder sofort oder mit Verzögerung ein Wert zurückgegeben.  Das zeigt uns, was passieren kann, wenn Anfragen schnell oder langsam bearbeitet werden und welche Auswirkungen dies auf die Gesamtleistung Ihrer Apps hat, da viele Benutzer Anfragen stellen.

Hier ist der Code, der die Dienste definiert:

Wie Sie sehen, handelt es sich hier eindeutig um ein erfundenes Beispiel, aber wir haben einige schnell reagierende Dienste und eine mit einer kurzen Verzögerung.  Wir können diese App jetzt verwenden und beginnen, unseren Leistungstestplan in JMeter zu schreiben. Lassen Sie uns zuerst JMeter auf unserer Maschine installieren.


Einhaken in New Relic

Die Übermittlung Ihrer Anwendungsberichte an New Relic ist ein sehr einfacher Prozess. Neue Relic-Unterstützung für Ruby, Python, PHP, Java und andere Plattformen mit leicht verständlichen Handbüchern für alle. Bei Ruby an Sinatra handelt es sich buchstäblich um einen vierstufigen Prozess:

  • Fügen Sie 'newrelic_rpm' gem zu Iherem GemFile und 'bundle install' hinzu.
  • Fügen Sie in Ihrer Hauptanwendung 'app.rb', in der wir oben die Serviceroute definiert haben, eine Zeile "require 'newrelic_rpm'" hinzu.
  • Laden Sie die Datei 'newrelic.ini' von Ihrem Konto in New Relic herunter und speichern Sie sie in einem Konfigurationsordner Ihrer App.
    (Stellen Sie sicher, dass der Überwachungsmodus für die Entwicklung auf 'true' gesetzt ist, wenn er lokal ausgeführt wird.)
  • Rüsten Sie Ihre Anwendung auf und sehen Sie sie in New Relic!

Sobald Sie diese einfachen Schritte ausgeführt haben, sollten Sie anfangen, einige Daten zu New Relic zu sehen, wenn Sie Ihre App mit etwas Verkehr treffen. Sie wissen, dass es funktioniert, wenn die App aufgeführt ist und grün wird.

newrelic-screen-1

Der Vollständigkeit halber möchte ich nur einen kurzen Überblick über die Hauptansicht geben, die New Relic für Ihre Anwendungen bereitstellt. Das Konzept von New Relic besteht hauptsächlich darin, Anwendungen zu überwachen, die sich in Produktionsumgebungen mit Live-Verkehr befinden.  Auf dem Übersichtsbildschirm erhalten Sie einen Überblick über den aktuellen Status Ihrer Anwendung und wie sie auf Kundenanfragen reagiert.

Der Bildschirm kann wie folgt unterteilt werden:

  1. Antwortzeit - das ist die durchschnittliche Antwortzeit von Anrufen in Ihrer Anwendung.
  2. Apdex - Neue Relics-Metrik für die Kundenerfahrung. Eine Punktzahl in Richtung 1 zeigt die große Mehrheit der Benutzer an
    Anfragen fallen innerhalb einer angemessenen Zeit. Der Apdex kann nützlich sein, wenn eine eingestellte Anzahl unterschritten wird.
  3. Durchsatz - Die Anforderungen pro Minute (RPM) an Ihre Anwendung.
  4. Webtransaktionen - die verschiedenen Routen, auf die in Ihrer Anwendung zugegriffen wird. Diese werden nach den zeitaufwendigsten Anfragen geordnet.
  5. Fehlerrate - Der Prozentsatz der Anforderungen, die einen Fehler verursachen. Sie können hier einzelne Fehler durchklicken und debuggen.
newrelic-screen-2

Was ist JMeter?

jmeter-logo

JMeter ist eine Java-Anwendung, mit der Sie Testpläne erstellen können, mit denen Sie Ihre Anwendung testen können. Sie können alles einstellen, von der Anzahl der gleichzeitigen Benutzer des Dienstes bis zur Anzahl der Anfragen, die sie pro Sekunde stellen.  Sie können sogar die Anforderungen erhöhen, um zu sehen, wie Ihre App mit der sich ändernden Last umgeht, genau wie in der realen Bereitstellung.

Im Rahmen dieses Tutorials werde ich die Grundlagen für das Ausführen eines Testplans für Ihre Anwendungen zeigen. Mit einer Fülle von Plug-Ins und Dokumentation gibt es eine Vielzahl von Tools, mit denen Sie jede Art von Leistungstests durchführen können, die Sie benötigen.


Installation und Verwendung

Die Installation ist ziemlich unkompliziert und hier werden Anweisungen für Mac und Linux aufgeführt.

Mac OS X

Auf einem Mac kann JMeter sehr einfach über Brew installiert werden. Sobald Sie Brew haben, versuchen Sie das 
folgenden Befehl:

Linux

Laden Sie auf einem Linux-Computer einfach die JMeter-Downloadseite herunter. Folgen Sie einfach den Anweisungen.

Alle Plattformen

Nachdem Sie das JMeter-Hauptpaket erworben haben, müssen wir auch die Standard-Plugins installieren. Wir werden später insbesondere ein Plugin verwenden, daher müssen wir dieses hinzufügen, um es verwenden zu können. Das Standard-Plugin-Set kann über diesen Link bezogen werden: http://jmeter-plugins.org/downloads/file/JMeterPlugins-1.0.0.zip Nach dem Herunterladen des Extrakts in das JMeter-Paket, das sich unter folgender Adresse befindet: "/usr/local/Cellar/jmeter/ "auf einem Mac und wo auch immer Sie es installiert haben unter Linux.


Analyse in New Relic - zuerst brauchen wir einen JMeter-Testplan!

Nun haben wir JMeter und unsere einfache Anwendung installiert. Lassen Sie uns diese App testen und sehen, wie sie funktioniert. Wenn Sie JMeter einschalten, erhalten Sie diesen Bildschirm:

Nun legen wir die Basis-URL für unsere Anfragen fest. Klicken Sie mit der rechten Maustaste auf "Testplan" im linken Bereich und wählen Sie 'Hinzufügen -> Konfigurationselement -> HTTP-Anforderungsstandard'. Wir können jetzt wie hier unsere Basis-URL eingeben.

jmeter-screen-2

Wir können jetzt die Anzahl der Threads oder "Benutzer" unseres Systems hinzufügen. Klicken Sie dazu erneut mit der rechten Maustaste auf "Testplan" und wählen Sie 'Hinzufügen -> Threads (Benutzer) -> Thread-Gruppe'.  Wir können dann die Benutzer eingeben, in diesem Fall 20. Stellen Sie sicher, dass Sie die Option für die Anzahl der Endlosschleifen auswählen, da wir später die Zeit und die Anzahl der Anfragen über ein Plugin steuern können.

jmeter-screen-3

Sobald wir die Thread-Gruppe haben, können wir nun die Anforderungen definieren, die wir an unsere Anwendung stellen möchten, und die Leistungstests durchführen. Dazu fügen wir unserem "Testplan" "HTTP Request" hinzu.  Dies kann gefunden werden, indem Sie mit der rechten Maustaste auf die "Thread-Gruppe" klicken und "Hinzufügen -> Sampler -> HTTP-Anfrage" wählen. Wir können dann die Anfrage im Fenster wie unten definiert definieren.

jmeter-screen-4

Sie können sehen, wie wir die Basis-URL nicht definieren müssen, wie wir dies zuvor getan haben, und müssen stattdessen nur den Pfad für die Anfrage hinzufügen. In diesem Fall führt der Pfad zu unserer Antwort 'example/1'.  Sie werden auch bemerken, dass ich die beiden anderen Anforderungen zusammen mit den Ergebnis- und Grafikfenstern hinzugefügt habe, anhand derer wir die Ergebnisse der Tests analysieren.  Sie sollten sich jetzt mit dem Hinzufügen von Elementen auskennen und sie können leicht im Menü anhand ihrer Namen gefunden werden. Die wichtigsten zwei von Interesse sind der "Throughput Shaping Timer" und der "Composite Graph".

Mit dem Shaping-Timer können wir abbilden, wie die Anfragen im Laufe der Zeit an unsere Anwendung gesendet werden sollen.  Zum Beispiel können wir eine Anforderung pro Sekunde für 60 Sekunden konfigurieren und dann für fünf Sekunden bis zu fünf Anforderungen pro Sekunde hochfahren und sehen, wie sich dies auf unsere Antwortzeiten auswirkt. Sehen wir uns an, wie wir das im Bereich Shaping Timer konfigurieren.

jmeter-screen-5

Indem Sie jede Zeile hinzufügen und hinzufügen, können Sie den Umfang der Anforderung festlegen und für wie lange das geschehen soll. Anschließend können wir unsere Ergebnisse mit dem "Composite Graph" anzeigen, der die pro Sekunde durchgeführten Transaktionen gegen die Antwortzeit unserer Anfragen zeigt.  Das erfordert eine minimale Konfiguration. Fügen Sie einfach die beiden Diagramme hinzu, die wir kombinieren möchten, und fügen Sie dann in den Einstellungen für das zusammengesetzte Diagramm die erforderlichen Diagramme hinzu:

jmeter-screen-6

Das ist es! Wir können jetzt unseren Testplan ausführen und einige Ergebnisse sehen. Drücken Sie play in Richtung des oberen Bildschirmrandes und klicken Sie dann auf das zusammengesetzte Diagramm.  Die Ergebnisse werden sofort angezeigt, und Sie können ein Bild davon erhalten, wie Ihre Anwendung reagiert. Schauen wir uns unsere Ergebnisse an.

jmeter-screen-7

Wir können deutlich erkennen, dass der Sprung bei den Anfragen innerhalb einer Minute einen ziemlich großen Einfluss auf unsere Anwendung hat.  In der ersten Minute sind die Anforderungen bei eins pro Sekunde stabil und geben Antwortzeiten von etwa zwei/drei ms. Wenn wir jedoch auf fünf ansteigen, erhöhen sich die Antwortzeiten leicht auf fünf und fünf m/s.  Offensichtlich sind dies sehr schnelle Reaktionszeiten in der realen Welt, aber wir zeigen hier nur, wie wir die Last erhöhen und den Einfluss sehen können, falls vorhanden.

Vergleichen wir diese Ergebnisse mit dem Dienst, der drei Sekunden verzögert. Wie wird das mit der Laststeigerung fertig werden? Um zu Beispiel 2 zu wechseln, klicken Sie mit der rechten Maustaste auf Beispiel 1 und wählen Sie "Toggle".  Dadurch wird diese Anforderung deaktiviert, und Sie können dann in Beispiel 2 umschalten, um sie zu aktivieren. Klicken Sie oben auf das Symbol "Alle löschen" (Sweeping Brush), um die Ergebnisse des letzten Laufs zu löschen, und drücken Sie dann auf Play.

jmeter-screen-8

Trotz der Verzögerung von drei Sekunden hat der Server die Anforderungen ziemlich gut gemanagt, und wir sehen die Ergebnisse für diesen Dienst ähnlich.  Nur wenige Millisekunden nehmen zu, wenn die Anforderungen steigen. Mit einem so einfachen Service ist dies zu erwarten.


New Relic-Analytik

Die wahre Stärke liegt jetzt in der Kombination dieser Daten mit New Relic. Wir könnten beispielsweise festlegen, dass JMeter für eine halbe Stunde mit unterschiedlichen Lastvariationen ausgeführt wird. Anschließend können Sie mit New Relic die Ergebnisse analysieren und mithilfe der Drilldown-Funktion nach Engpässen in der Anwendung suchen.  Diese können dann optimiert werden, um Ihre Leistung zu steigern, bevor Sie sie an Ihre Kunden liefern.

Ich werde auch hier nicht auf die Einrichtung von New Relic eingehen, da dies in anderen kürzlich erschienenen Artikeln über Nettuts+ beschrieben wird (sehen Sie hier).  Sobald Ihre Anwendung verbunden ist, müssen Sie lediglich die Last über JMeter generieren und sich in New Relic anmelden, um die Ergebnisse zu sehen.  Für diesen Lauf habe ich den Shaping-Timer so eingerichtet, dass unsere Last für 30 Minuten ausgeführt wird, wobei die Anforderungen von fünf auf 10 und dann auf 15 pro Sekunde erhöht werden. Dies sollte uns in New Relic einen angemessenen Traffic bieten.

jmeter-screen-9

Sobald der JMeter-Test ausgeführt wurde, können wir einen Blick in New Relic werfen, wo nun der Status der durch die App folgenden Daten angezeigt wird.

jmeter-screen-10

Das zeigt deutlich das Ansteigen der Anforderungen, wobei der Spitzenwert bei etwa 400 Anfragen pro Minute (U/min) liegt und die Antwortzeiten bei drei Sekunden stabil bleiben.  Wir können tiefer in die Statistiken eintauchen und die Transaktion betrachten, die wir tätigen. Wenn Sie zur Web-Transaktionsansicht klicken, können Sie sehen, welche Analyse New Relic gerade für diesen Teil der Anwendung durchgeführt hat.  Wenn der Code, der die Anforderung abwickelte, mehr Ebenen hatte, z. B. Methoden, um andere Systeme aufzurufen, um Daten abzurufen, bevor sie dem Benutzer wieder angezeigt werden, würde das eher zu einer Störung führen.

Auf der linken Seite wird beispielsweise angezeigt, dass wir 100% der Anforderungszeit in diesem Anruf verbracht haben. Wenn wir mehrere Schritte hatten, z. B. einen Aufruf an eine Datenbank, könnte es dort einen hohen Prozentsatz geben und wir könnten die Abfrage an die Datenbank optimieren, um die Leistung zu erhöhen.

jmeter-screen-11

New Relic bietet auch eine großartige Berichtansicht zu Ihren Anwendungsdaten, die als Skalierbarkeit bezeichnet wird. Dieser Bericht kann sehr nützlich sein, um die Fähigkeit Ihrer Anwendungen zur Bewältigung der steigenden Last zu überwachen.  Das Diagramm zeigt Ihre Antwortzeit im Vergleich zu den Anforderungen pro Minute. Sie können deutlich sehen, ob die Antwortzeit abnimmt, wenn sie zunimmt.  Das ist ein hervorragendes Werkzeug, auf das Sie sich häufig sowohl bei Leistungstests wie auch bei der Leistungsüberwachung Ihrer Produktionsanwendung beziehen sollten.

In unserem nachstehenden Beispiel ist es klar, dass die Anwendung eine Antwortzeit von drei Sekunden aufrechterhalten kann, selbst wenn die Drehzahl steigt.

jmeter-screen-12

New Relic bietet auch eine andere Ansicht, die Kapazität. Auf diese Weise können wir uns ansehen, wie viel der verfügbaren Ressourcen von unserer Anwendung genutzt werden.  Dem Entwickler wird angezeigt, ob die Anzahl der Instanzen, die Ihre Anwendung bereitstellt, ausreicht, um die Art der Last zu handhaben, die Sie erhalten.  Dies ist wichtig, um sicherzustellen, dass Sie sich nicht in der Nähe der Kapazität befinden und die Möglichkeit haben, Verkehrsspitzen zu bewältigen, die außerhalb Ihres normalen Verkehrsflusses auftreten können.  New Relic fasst die Seite gut zusammen, neben der Analyse unserer Anwendung hier, die sich auch in diesem Einzelfall als gut erweist.

jmeter-screen-13

Schlussfolgerung

Das Ziel dieses Tutorials war es, Ihnen zu zeigen, wie Sie JMeter-Testpläne für Ihre Anwendung schnell einrichten können. So können Sie die Leistung Ihrer Anwendung testen, bevor Sie sie an Ihre Kunden liefern. Dieser Ansatz kann in neuen Projekten verwendet werden, um sicherzustellen, dass die von Ihnen zu liefernde Anwendung für den realen Verkehr bereit ist.  Es kann auch für ältere Anwendungen verwendet werden. Dadurch erhalten Sie einen Basisindikator für die Leistungsindikatoren. Wenn Sie Änderungen vornehmen, können Sie sehen, ob sich die Leistung Ihrer Anwendung verbessert oder verringert.

Durch die Nutzung der großartigen Werkzeuge von New Relic können Sie Ihre Anwendung online in Echtzeit überwachen, aber auch das Werkzeugset nutzen und auf Ihre eigene Offline-Analyse anwenden. Das gibt Ihnen, dem Entwickler, Vertrauen in Ihr Produkt, während es entwickelt wird und wenn es in die Wildnis kommt.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.