35 Stimmen

Wie wirken sich Threads und die Anzahl der Iterationen auf den Test aus und was ist das maximale Thread-Limit von JMeter?

  1. Könnten Sie mir bitte das Höchstlimit der Anzahl von Threads sagen, die ich in JMeter 2.4 für die Durchführung eines Lasttests verwenden kann?

  2. Gibt es einen Unterschied darin, alle Threads in einer einzigen Schleife zu verwenden oder indem man weniger Threads nimmt und die Schleife initialisiert, um die gleiche Anzahl von Benutzern/Threads zu erreichen?

Beispiel:

Anzahl der Threads=500
Ramp up=1000
Schleife=1

ob es das Gleiche ist wie

Anzahl der Threads=50
Ramp up=100
Schleife=10

oder gibt es einen Unterschied hinsichtlich des Ergebnisses?

22voto

BlackGaff Punkte 7409
  1. Die maximale Anzahl von Threads wird von vielen Faktoren bestimmt, siehe diese Antwort https://stackoverflow.com/a/11922239/460802

  2. Es gibt einen großen Unterschied in dem, was du vorschlägst.

    • "500 Threads, Loop 1 " bedeutet 500 Threads, DIE ZUR GLEICHEN ZEIT einmal die Schleife durchlaufen.
    • "50 Threads, Loop 10" bedeutet nur 50 Threads, DIE ZUR GLEICHEN ZEIT zehnmal die Schleife durchlaufen.

Theoretisch erhältst du dieselbe Anzahl von Ergebnissen (500), aber du greifst den Server auf sehr unterschiedliche Weise an.

11voto

Ballon Punkte 6456

Die maximale Anzahl von Benutzern hängt von Ihrem Betriebssystem, dem freien RAM und der Verbindung ab. Win XP ist auf 3000 Prozesse gleichzeitig begrenzt. Unter Linux ist es mehr als 3000, aber ich weiß nicht wie viel. Achten Sie darauf, dass Sie den Testserver überlasten, und wenn Sie 3000 Threads auf Ihrem Rechner starten, erfordert das viele Ressourcen und der Test wird nicht realistisch sein. Ich ziehe es vor, maximal 300 Benutzer pro Maschine zu starten. Wenn Sie die Anzahl der Benutzer erhöhen möchten, verwenden Sie verteiltes Testen (verwenden Sie mehr Maschinen wie bei einem DoS-Angriff). In der Theorie ist die Anzahl der Anfragen zwar gleich, aber die Zeitkomplexität ist nicht dieselbe.

8voto

Adnan Punkte 2856

Dies ist sehr häufig festzustecken, nachdem ein Szenario und Testfälle erstellt wurden, müssen wir mit JMeter ausführen und den Wert festlegen, wie viele Benutzer oder Threads im JMeter-Thread-Gruppe zulässig sind. Wir möchten weder unseren Lastgenerator noch unsere JMeter-Instanz drosseln. Grundsätzlich ist in beiden Fällen eine Anpassung erforderlich. Andernfalls wird der Testausgang wertlos sein und wir werden Stunden unserer Zeit verlieren. Hier sind also die Dinge, die wir berücksichtigen müssen:-

  • JMeter ist ein Java-Tool, das mit JVM ausgeführt wird. Um maximale Leistung zu erzielen, müssen wir JMeter während der Ausführung maximale Ressourcen zur Verfügung stellen. Zuerst müssen wir die Heap-Größe erhöhen (Im JMeter bin-Verzeichnis erhalten wir jmeter.bat/sh)
HEAP=-Xms512m –Xmx512m

Dies bedeutet, dass die standardmäßig zugewiesene Heap-Größe minimal 512 MB und maximal 512 MB beträgt. Konfigurieren Sie es entsprechend Ihrer eigenen PC-Konfiguration. Denken Sie daran, dass das Betriebssystem auch eine gewisse Menge an Speicher benötigt, also weisen Sie nicht allen Ihres physischen RAMs zu.

  • Fügen Sie dann die Speicherzuweisungsrate hinzu

NEW=-XX:NewSize=128m -XX:MaxNewSize=512m

Dies bedeutet, dass der Speicher mit diesem Satzrate erhöht wird. Sie sollten vorsichtig sein, denn wenn Ihre Lastgenerierung am Anfang sehr hoch ist, könnte dies zunehmen. Denken Sie daran, dass Ihr Heap-Speicherplatz innerhalb der JVM fragmentiert wird, wenn der Bereich zu breit ist. In diesem Fall muss der Garbage Collector härter arbeiten, um aufzuräumen.

  • JMeter ist eine Java-GUI-Anwendung. Es hat auch die Non-GUI-Edition, die weniger ressourcenintensiv (CPU/RAM) ist. Wenn wir JMeter im Non-GUI-Modus ausführen, verbraucht es weniger Ressourcen und wir können mehr Threads ausführen.

  • Alle Listener deaktivieren: Während des Testlaufs. Sie dienen nur zur Fehlerbehebung und zur Gestaltung Ihres gewünschten Skripts.

Listener sollten während der Lasttests deaktiviert werden. Wenn sie aktiviert sind, verursachen sie zusätzliche Overheads, die wertvolle Ressourcen verbrauchen, die von wichtigeren Elementen Ihres Tests benötigt werden.

  • Versuchen Sie immer, die Aktualisierte Software zu verwenden. Halten Sie Ihr Java und JMeter aktuell.

  • Vergessen Sie nicht, dass Speichern von Anfragen und Antwortkopfzeilen, Ergebnisse von Assertions und Antwortdaten viel Speicher verbrauchen können! Versuchen Sie also nicht, diese Werte auf JMeter zu speichern, es sei denn, es ist unbedingt erforderlich.

Zusammenfassend, wenn in JMeter-Skript keine Listener enthalten sind, kein Monitoring innerhalb des laufenden JMeter-Servers, keine Netzwerküberlastung/Hindernisse vorhanden sind und JMeter-Skripts optimiert sind, dann erfolgt hier eine grobe Berechnung:

Die Gesamtanzahl gleichzeitiger Benutzer = (gesamter zuweisbarer Speicher)/(Größe aller Anfragen)

Schätzen Sie Ihre gleichzeitige Anzahl von Benutzern/Threads (aktive Threads) nur im Hinblick auf Ihr Lastszenario.

Außerdem müssen Sie überwachen, ob Ihr Server Speicherverbrauch, CPU-Auslastungen unter 80 % liegen oder nicht. Wenn diese Auslastungen über 80% hinausgehen, betrachten Sie diese Tests als unzuverlässig als Bericht.

Zur besseren und ausführlicheren Verständnis müssen diese beiden Blogs Wie viele Benutzer kann JMeter unterstützen? und 9 einfache Lösungen für ein JMeter Load-Test "Out of Memory" Fehler helfen.

6voto

blpsilva Punkte 69

1: Natürlich hängt es sehr von der Maschine ab, auf der JMeter läuft, aber wenn es auf die Leistung ankommt, kann ich Ihnen einige Hinweise geben. JMeter ermöglicht es Ihnen, mehrere Prozesse auf demselben Rechner auszuführen, und es ist normalerweise ziemlich zuverlässig, bis zu 200 Threads pro JMeter-Instanz zu erzeugen. Wenn Sie mehr benötigen, empfehle ich die Verwendung mehrerer JMeter-Instanzen. Eine moderne Maschine mit einigen Anpassungen kann problemlos 500 bis 1000 Threads erzeugen. Wenn Sie Linux verwenden, müssen Sie wahrscheinlich die maximale Anzahl der Dateideskriptoren erhöhen (siehe hier).

Es hilft sehr, JMeter ohne GUI auszuführen, Berichts-/Grafikdaten in einer Datei zu schreiben, die später gerendert werden soll. Achten Sie auch auf Ihre Netzwerkbeschränkungen. Ein Server in einem Gbps-Netzwerk könnte leicht einige tausend Anfragen generieren, aber ein Laptop, der einen 54-Mbps-Router teilt, wäre viel stärker eingeschränkt. Versuchen Sie, Ihre tatsächliche Verbindung zum Server durch die Größe der Anfragen zu teilen, und dann werden Sie wissen, ob die Bandbreite Sie einschränken wird. Achten Sie besonders auf die Konfiguration von JMeter, um die in einer HTML-Antwort referenzierten Dateien herunterzuladen oder nicht.

Ich hoffe, ich konnte Ihnen helfen.

2: Genau das hat BlackGaff erklärt: "500 Threads, Schleife 1" bedeutet 500 Threads ZUR GLEICHEN ZEIT, die die Schleife EINMAL durchlaufen. "50 Threads, Schleife 10" bedeutet nur 50 Threads ZUR GLEICHEN ZEIT, die die Schleife ZEHN MAL durchlaufen.

2voto

Harit Kumar Punkte 179

Es gibt keine Grenze für die Thread-Ausführung in Jmeter. Da es sich um ein auf Java basierendes Tool handelt, nutzt es die Java-Thread-Fähigkeiten. Bei gleichzeitiger Thread-Ausführung müssen wir die Maschinenkonfiguration beachten (dh Speichergröße und CPU).

Um Probleme mit OutOfMemory zu vermeiden, versuchen Sie jmeter im NON-GUI-Modus mit benutzerdefinierten Java-Laufzeitargumenten im jmeter-Skript innerhalb von apache-jmeter/bin/jmeter auszuführen. Standardmäßig sind es 512 MB.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X