Was bringt die Messungen richtig, JMeter oder Apache ab?
Ich angefangen zu schreiben, einige grundlegende tests in JMeter und war überrascht, dass die Messungen so Verschieden sind von denjenigen von Apache ab.
Habe ich ein gigabit LAN Anschluss ein Intel i7 server mit Nginx und einen i5 test-Maschine mit JMeter oder ab. Zunächst, ich bin einfach Erprobung der out-of-the-box Nginx Startseite-response-rate.
ab -c 1 -n 100 http://testserver.local/
gibt
Document Path: /
Document Length: 151 bytes
Concurrency Level: 1
Time taken for tests: 0.078 seconds
Complete requests: 100
Failed requests: 0
Write errors: 0
Total transferred: 38400 bytes
HTML transferred: 15100 bytes
Requests per second: 1280.77 [#/sec] (mean)
Time per request: 0.781 [ms] (mean)
Time per request: 0.781 [ms] (mean, across all concurrent requests)
Transfer rate: 480.29 [Kbytes/sec] received
Dieses Ergebnis ist konsistent reproduzierbar, +/- ein paar Prozent.
In JMeter, ich habe ein 1-100 Benutzer-loop thread-Gruppe mit:
- einem HTTP-header-manager-Einstellung Accept-Encoding: gzip
- eine HTTP-Get /sampler
- einen zusammenfassenden Bericht Zuhörer
Nur mit 100 Proben, das gibt Wild inkonsistente Ergebnisse, jedes mal, wenn ich ihn laufen. Aber die erschreckendste Tatsache ist, dass der Durchsatz wird berichtet, so niedrig wie 40 Anfragen pro Sekunde (nicht 1280). Die höchsten rate war 1030, und dies wurde nur erreicht, wenn ich erhöht auf 10.000 Proben.
Bin ich Recht in der Annahme, dass JMeter ist das falsche tool für einfache Last-tests, da seine Gemeinkosten zu hoch sind, erlauben genaue Messungen?
InformationsquelleAutor der Frage Rick-777 | 2012-04-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Jmeter zeigt Ihnen, wie lange jede Anfrage eigentlich nahm. AB nur einige sehr grundlegende Mathematik, um die der Durchschnitt der Gesamtbevölkerung. Also die direkte Antwort auf deine Frage ist, dass jmeter bekommt es rechts und ab macht nur eine grobe Schätzung, indem Sie den Mittelwert über alles.
Aber sicher, wenn du die beiden tools nebeneinander und bewerten Sie für Geschwindigkeit, dann ist es eindeutig der Fall, dass ab wird aus ausführen jmeter. Jmeter einfach nicht mehr, es zeichnet mehr Daten und Verarbeitung ist mehr Logik, so dauert es länger, bis drehen Sie, um eine einzelne Anfrage. Die einfache Tatsache ist, dass Jmeter ist eine voll funktionsfähige Last-Test-tool, AB, auch, nicht.
Der Sache ist, das Ziel eines load testing - tool ist nicht der Schnellste Kind auf den block, sondern es geht darum, in der Lage zu bauen, eine realistische Vorstellung von der Art Ihrer app laden getroffen werden könnten, wenn es live geht. In dieser Hinsicht jmeter gewinnt die Hände nach unten, so dass es hängt wirklich davon ab, was Ihre Anforderungen sind. Wenn Sie nur wollen, zu generieren so viele Anfragen wie möglich mit der geringsten Menge an hardware, die dann ab ist eine gute Wahl, aber wenn Sie bauen wollen, einen repräsentativen test, mit Transaktions-Reisen, bedingte Logik und allerlei andere nützliche Dinge, dann jmeter ist der Weg zu gehen. Betrachten Sie es wie folgt: Sie sind beide Apache-Projekte, aber AB war, glaube ich, dient zum testen der apache-web-server, JMeter, jedoch wurde entwickelt, um zu testen, Tomcat.
Nun, ich vermute, dass jmeter wurde produziert inkonsistente Ergebnisse, weil es der Kollision mit einem limit auf der Maschine ausgeführt wurde. Ich Wette, Sie waren läuft im GUI-Modus und hatte mindestens ein listener aktiv, wie diese Sie Sie bitten, das tool zu viel. Wenn Sie eine hohe rate von Anfragen, die dann Jmeter ist ein lean and mean-Modus. In der Regel, bei großen Mengen ist die beste Methode zum ausführen von tests auf der Kommandozeile mit sehr wenigen Zuhörer; es gibt viele Informationen über dieses Thema auf den apache jmeter Website.
Anderen Punkt, den Sie berücksichtigen sollten, wenn Sie wirklich in laden testen, ist, dass, um wirklich zu bekommen, profitieren von dieser Art von Sache, die Sie müssen zunächst entscheiden, welche Art von Last, die Sie brauchen, Ihre Website zu unterstützen und nur dann sollte man design ein test, der darstellt. Dies wird erreicht, indem Tempo und simulierten Wartezeiten. Das problem mit dem erzählen einem thread, der sollte einfach Weg und führen Sie so schnell wie es möglich ist, wird die Iteration so schnell wie die örtlichen Bedingungen es zulassen, aber es wird immer etwas sein, das legt das bricht auch ab ist begrenzt, egal wie leicht ein Werkzeug ist es immer noch etwas. Aber wenn Sie halten Sie Ihre Anfragen dann entfernen Sie dieses problem und als sehr nützlichen bonus, den Sie am Ende mit der Konsistenz zwischen den Läufen und zwischen den builds des Codes, also selbst wenn Ihr server beschleunigt oder verlangsamt (mit änderungen an der code-Basis) Ihre Prüfung immer noch die gleiche rate von Anfragen - das ist ziemlich nützlich für benchmarking.
Wenn Sie möchten, nehmen Sie JMeter weiter, dann haben Sie einen Blick auf die Konstanten Durchsatz Timer und verwenden Sie dann mehrere threads zu bauen, das Niveau der Verkehrs Sie brauchen, zu stellen.
InformationsquelleAutor der Antwort Oliver Lloyd
In Ihrem setup, JMeter ist die Sättigung selbst, schneller als es can sättigen Sie Ihren web-server.
Du eine sehr optimierte C web-server auf überlegene hardware-und bench-marking mit einem relativ schweren Java-app auf weniger hardware. Optimierte C Maschinencode wird (wahrscheinlich) immer schneller als Java-bytecode. JMeter ist nicht in der Lage zu halten mit Nginx und ist daher geben Sie seltsame Ergebnisse, wie es trifft, hardware-Einschränkungen. Java hat viele schöne Dinge im hintergrund, die Verwaltung von hardware-Ressourcen, aber auch zu unvorhersehbaren Verhalten bei extremen Ressourcen-Nutzung. ApacheBench, auf der anderen Seite, ist ein Licht-genug C-Programm, dass es zu sättigen, die server und produzieren konsistente Ergebnisse, weil es überkapazitäten nach einer Sättigung Ihrem web-server.
JMeter ist ideal für bench-marking heavy-er dynamische Anwendungen, die einige Zeit brauchen, um Anforderungen zu verarbeiten. Alle zusätzlichen Daten, die Sie bereitstellt, hilft mit web-apps wie die. Wenn Sie den Umgang mit statischen file-serving (nur zu den schnellsten, was ein web-server tun können) auf hoch-optimierte web-servers benötigen Sie ein Werkzeug, schnell genug zu halten.
InformationsquelleAutor der Antwort
Als es schon in der ersten Antwort, das Stichwort"Anforderungen".
JMeter ist eine bessere Wahl für Test-server, dient web-Seiten. Zum Beispiel, es kann senden Sequenz von Anfragen, Generierung von differet Anforderung für jeder Sequenz, das Parsen und die HTML-Antworten und laden Sie Inhalte von Bilder und Skripte aus den HTML.
AB ist die bessere Wahl für REST API-Test, wo Sie Sie brauchen, die server-Antwort so schnell wie möglich und servieren Sie so viele anfordern wie möglich, es gibt keine Verbindung zwischen zwei aufeinander folgenden Anfrage-und etc -.
So, AB ist in der Tat in der Lage, erzeugen mehr Anfragen als JMeter vs demselben server vom gleichen client-Computer.
InformationsquelleAutor der Antwort Igor Grinfeld