JMeter – Performance Check für WebServer
Wie bekomme ich meinen Webserver schneller? Diese Frage habe ich mich in den letzten Tagen des öfteren fragen müssen. Bei der Optimierung hat mir ein Tool sehr viel geholfen: JMeter, ein Projekt der Apache Foundation.
Funktionen
Grob gesagt: JMeter misst die Zeit, die benötigt wird um Anfragen an dem Server zu senden. Es unterstützt eine Vielzahl an Anfragen, dazu gehören auch unter HTTP, FTP, SOAP oder auch E-Mail Protokolle. In meinem Beispiel werde ich HTTP-Anfragen messen.
Die Anfragen werden parallel (in Threads) an den Server geschickt. Man kann hierfür einige Einstellungen vornehmen, von denen ich die Wichtigsten erklären werde.
Erste Schritte
JMeter kommt für Windows in einer Zip-Datei. Diese muss einfach nur entpackt werden. Man kann es in zwei Modi starten: Mit und ohne Oberfläche. Der Start ohne Oberflöche ist für das automatisierte Testen gedacht. Wir bleiben aber erst einmal bei der Oberfläche.
Für den Start mit Oberfläche, muss die Datei jmeter.bat im bin-Verzeichnis gestartet werden.
Testplan erstellen
Thread-Gruppe
In der Oberfläche kann man links den Punkt „Testplan“ finden. Dieser beschreibt den Ablauf des Tests. Zunächst einmal müssen wir dort eine neue Thread-Gruppe hinzufügen. Dies geht mit Rechtsklick auf Testplan->Hinzufügen->Threads(Users)->Thread-Gruppe:
Erklärung Thread: Normalerweise wird in einer Anwendung ja eine Zeile nach der anderen abgearbeitet. Dies ist in einem Thread natürlich nicht anders. Jedoch besteht die Möglichkeit, den Programmcode zwei mal nebeneinander laufen zu lassen -> Dafür benötigt man entweder Threads oder mehrere Prozesse.
In diesem Formular ist mit Anzahl von Threads gemeint, wie viele Anfragen zum Server parallel abgeschickt werden können. So lässt sich eine Auslastung mit mehreren Nutzern testen. Trage also eine Zahl ein, die produktiv später erreicht werden könnte. Für kleinere Seiten reichen 2-3 Threads zum Testen aus.
Um einen brauchbaren Wert zu bekommen, sollte man seine Anfragen öfters als einmal laufen lassen. In meinen Test nehme ich 500 Wiederholungen.
HTTP Request Default Einstellungen
Es macht meistens Sinn, mehrere verschiedene Anfragen an der Server zu senden. Um nicht jedes Mal alles neu einzustellen, kann man Default-Einstellungen festlegen. Dazu müsst ihr einfach mit Rechtsklick auf die eben erstellte Thread-Gruppe klicken und dort unter Konfigurations-Element die HTTP Request Default Einstellungen hinzufügen.
Ich habe hier die Domain und den Port eingetragen.
Sampler hinzufügen
Ein Sampler ist nichts anderes als eine Abfrage. Über die Threadgruppe kann man so auch einen HTTP-Request hinzufügen:
Wichtig ist hier für den ersten Test nur das Feld Pfad. Hier muss die zu prüfende Url ohne Domain und Http eingegeben werden. Je nach dem wie umfangreich dein Test sein soll, kannst du natürlich noch mehrere Http-Requests hinzufügen
Test auswerten
Die Auswertung wird über so genannte Listner gesteuert. Diese Überwachen den Test und geben Unterschiedliche Ergebnisanzeigen. Die Listener können auch wieder über Rechtklick hinzugefügt werden.
Am übersichtlichsten finde ich den Listener „Graph“. Er bietet eigentlich alles, was man für das Geschwindigkeit messen braucht. Wer noch etwas genauer testen möchte kann mal den Listener „Ergebnisse“ ausprobieren (siehe Titelbild).
Optimieren
Jetzt geht es ums Optimieren – Das ist der Punkt an dem ich bei meinem neuen Server zur zeit auch noch bin. Hier sind einige vielleicht hilfreiche Artikel zur Optimierung der Ladezeit:
- MySQL Optimierung in 4 Schritten (stevieswebsite.de)
- MySQL und Apache auf vServer optimieren (guido-muehlwitz.de)
Du arbeitest in einer Agentur oder als Freelancer?
Dann wirf doch mal einen Blick auf unsere Software FeatValue.
Über uns
Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project