Kürzlich wurde ich von einem Kunden gebeten, Leistungstests in seinen Entwicklungsprozess einzuführen. Sie haben einwöchige Iterationen, in denen sie die verschiedenen Komponenten ihres Systems integrieren, und wollten das Endergebnis jede zweite Woche testen. Ich fing klein und einfach an, lud JMeter von Apache herunter, startete den Aufzeichnungs-Proxy, zeichnete ein Szenario auf, änderte alle relevanten Formularfelder in Regex-Variablen und legte los. Es funktionierte großartig, wir hatten einige interessante Daten mit ein paar netten Graphen, die zeigten, dass die Leistung in Ordnung war. Aber die Freude hielt nicht lange an...
Von da an ging es schnell bergab.
- Wir hatten einige Spitzen in den Leistungsdaten, ohne dass wir wussten, warum das so war.
- Wir brauchten ein etwas anderes Diagramm, aber es gab keine Möglichkeit, es zu erstellen, außer alle Rohdaten in Excel zu kopieren und einzufügen und das Diagramm von dort aus zu erstellen. Natürlich in der neuesten Version, denn frühere Versionen von Excel können nicht alle Daten verarbeiten.
- Wir wollten die Last so weit steigern, dass 1 Rechner nicht mehr in der Lage war, die Last zu erzeugen. Wir teilten die Datensätze auf, starteten 3 separate JMeter ungefähr zur gleichen Zeit und integrierten die XML-Dateien später. Dies dauerte zwischen einem halben und einem Tag.
- Wir brauchten Informationen über Seitenaufrufe, nicht über HTTP-Anfragen. Es scheint in JMeter keine Möglichkeit zu geben, mehrere HTTP-Anfragen in einem Seitenaufruf zusammenzufassen.
- Wir konnten die Hochlaufphase in JMeter nicht zum Laufen bringen. Unsere Server wurden in den ersten Minuten überlastet, bis sich alles beruhigt hatte und ein normales Verkehrsaufkommen zu verzeichnen war.
- Es war sehr schwierig, die Daten eines Laufs mit denen eines früheren Laufs zu vergleichen. Es war sehr schwer zu sagen, ob die Leistung besser oder schlechter geworden war oder ob etwas anderes im Spiel war.
Aber das Hauptproblem tauchte erst ein paar Wochen später auf. Als jemand etwas am Ablauf eines der von uns getesteten Szenarien änderte. Wir hatten einen fehlgeschlagenen Test und kaum eine Chance, herauszufinden, was wir dagegen tun konnten. Nachdem wir stundenlang versucht hatten, das Problem zu finden, gaben wir auf und zeichneten alles neu auf, überarbeiteten die regulären Ausdrücke usw.
Zu dieser Zeit beschloss ich, mich nach einer anderen Lösung umzusehen und bekam von einem Xebian-Kollegen NeoLoad empfohlen. Es handelt sich um ein kommerzielles Produkt zu einem, wie wir sagen würden, vernünftigen Preis. Es ist zwar definitiv teurer als kostenlos, aber es löst alle Probleme, die wir mit JMeter hatten. Sie können so genannte Monitore hinzufügen, die Ihre Datenbankstatistiken, die Webserverauslastung usw. überwachen. Damit haben Sie ein Werkzeug, mit dem Sie die Ursache für 'seltsames' Verhalten in den Problembereichen finden können. Sie können die Last auf mehrere Rechner verteilen, indem Sie einfach einen Agenten auf einem anderen Rechner installieren und ein Kontrollkästchen im Controller aktivieren. Sie können Daten auf der Ebene von HTTP-Anfragen und Seitenaufrufen anzeigen. Und das Beste ist, dass der Vergleich eines Berichts mit einem früheren Bericht in 30 Sekunden erledigt ist. Und das Beste ist, dass Sie die aktuellen Antworten mit den Antworten vergleichen können, die Sie erhalten haben, als Sie sie aufgezeichnet haben. So können Sie z.B. feststellen, ob jemand Formularfelder hinzugefügt/geändert/entfernt hat. Wenn das passiert, finden Sie den Fehler schnell und müssen nicht das gesamte Szenario neu aufzeichnen und vorbereiten.
Unterm Strich haben wir also fast 3 zusätzliche Arbeitstage für die Vorbereitung von JMeter und die Nachbearbeitung der Berichte zu Diagrammen benötigt. Mit NeoLoad ist diese Zeit auf etwa 30 Minuten gesunken. Wir haben besser aussehende Berichte mit mehr Informationen als vorher, die wir leicht mit früheren Läufen vergleichen können.
Und wir können die Last jetzt auf mehr Rechner verteilen als vorher.
Ich will damit nicht sagen, dass JMeter nutzlos ist, ganz im Gegenteil. Es ermöglichte mir einen schnellen Einstieg und lieferte mir sehr schnell Ergebnisse. Es unterstützt viel mehr verschiedene Arten von Anfragen als NeoLoad. Es kann JMS-Nachrichten, Datenbankaufrufe usw. verarbeiten. Ich habe JMeter erfolgreich zur Leistungsoptimierung von Anwendungen eingesetzt. Aber für große, ernsthafte Leistungstests, die z.B. Teil von Akzeptanztests sind, sollten Sie wirklich NeoLoad in Betracht ziehen.
Verfasst von

Erwin van der Koogh
Contact



