1. Erste Schritte

1.0 Übersicht

Wenn Sie JMeter verwenden, folgen Sie normalerweise diesem Prozess:

1.0.1 Testplanerstellung

Dazu führen Sie JMeter im GUI-Modus aus.
Dann können Sie entweder die Anwendung von einem Browser oder einer nativen Anwendung aufzeichnen. Verwenden Sie dazu das Menü Datei  →  Vorlagen...  →  Aufzeichnung

Beachten Sie, dass Sie Ihren Plan auch manuell erstellen können. Stellen Sie sicher, dass Sie diese Dokumentation lesen , um die wichtigsten Konzepte zu verstehen.

Sie werden es auch mit einer der folgenden Optionen debuggen:
  • Ausführen  →  Start ohne Pausen
  • Ausführen  →  Starten
  • Auf Thread-Gruppe validieren

und View Results Tree Renderer oder Tester (CSS/JQUERY, JSON, Regexp, XPath). Stellen Sie sicher, dass Sie beim Erstellen Ihres Testplans Best Practices
befolgen .

1.0.2 Belastungstest läuft

Sobald Ihr Testplan fertig ist, können Sie Ihren Belastungstest starten. Der erste Schritt besteht darin, die Injektoren zu konfigurieren, die JMeter ausführen. Dies umfasst wie bei jedem anderen Lasttest-Tool Folgendes:

  • Richtige Maschinendimensionierung in Bezug auf CPU, Arbeitsspeicher und Netzwerk
  • OS-Tuning
  • Java-Setup: Stellen Sie sicher, dass Sie die neueste Java-Version installieren, die von JMeter unterstützt wird
  • Erhöhen Sie die Java-Heap-Größe . Standardmäßig wird JMeter mit einem Heap von 1 GB ausgeführt, dies ist möglicherweise nicht genug für Ihren Test und hängt von Ihrem Testplan und der Anzahl der Threads ab, die Sie ausführen möchten
Sobald alles bereit ist, verwenden Sie den CLI-Modus (Befehlszeilenmodus, früher als Non-GUI-Modus bezeichnet ), um ihn für den Lasttest auszuführen.
Führen Sie keinen Lasttest im GUI-Modus durch!

Im CLI-Modus können Sie eine CSV-Datei (oder XML-Datei) mit Ergebnissen generieren und JMeter am Ende des Lasttests einen HTML-Bericht generieren lassen. JMeter stellt standardmäßig eine Zusammenfassung des Lasttests bereit, während es ausgeführt wird. Mit Backend Listener können Sie während Ihres Tests
auch Echtzeitergebnisse abrufen .

1.0.3 Belastungstestanalyse

Sobald Ihr Belastungstest abgeschlossen ist, können Sie den HTML-Bericht verwenden, um Ihren Belastungstest zu analysieren.

1.0.4 Fangen wir an

Der einfachste Weg, mit der Verwendung von JMeter zu beginnen, besteht darin, zuerst die neueste Produktionsversion herunterzuladen und zu installieren. Die Version enthält alle Dateien, die Sie zum Erstellen und Ausführen der meisten Arten von Tests benötigen, z. B. Web (HTTP/HTTPS), FTP, JDBC, LDAP, Java, JUnit und mehr.

Wenn Sie JDBC-Tests durchführen möchten, benötigen Sie natürlich den passenden JDBC-Treiber Ihres Herstellers. JMeter enthält keine JDBC-Treiber.

JMeter enthält das JMS-API-JAR, aber keine JMS-Client-Implementierung. Wenn Sie JMS-Tests ausführen möchten, müssen Sie die entsprechenden JAR-Dateien vom JMS-Anbieter herunterladen.

Weitere Informationen zum Installieren zusätzlicher JAR-Dateien finden Sie im Abschnitt JMeter-Klassenpfad .

Starten Sie als Nächstes JMeter und gehen Sie durch den Abschnitt Erstellen eines Testplans des Benutzerhandbuchs, um sich mit den Grundlagen von JMeter vertraut zu machen (z. B. Hinzufügen und Entfernen von Elementen).

Gehen Sie abschließend den entsprechenden Abschnitt durch, um zu erfahren, wie Sie einen bestimmten Testplantyp erstellen. Wenn Sie beispielsweise daran interessiert sind, eine Webanwendung zu testen, lesen Sie den Abschnitt Erstellen eines Webtestplans . Die anderen spezifischen Testplanabschnitte sind:

Sobald Sie mit dem Erstellen und Ausführen von JMeter-Testplänen vertraut sind, können Sie sich die verschiedenen Konfigurationselemente (Timer, Listener, Behauptungen und andere) ansehen, die Ihnen mehr Kontrolle über Ihre Testpläne geben.

1.1 Anforderungen

JMeter erfordert, dass Ihre Computerumgebung einige Mindestanforderungen erfüllt.

1.1.1 Java-Version

JMeter ist mit Java 8 oder höher kompatibel. Wir empfehlen Ihnen dringend, aus Sicherheits- und Leistungsgründen die neueste Nebenversion Ihrer Hauptversion zu installieren.

Da JMeter nur standardmäßige Java-APIs verwendet, reichen Sie bitte keine Fehlerberichte ein, wenn Ihre JRE JMeter aufgrund von JRE-Implementierungsproblemen nicht ausführen kann.

Obwohl Sie eine JRE verwenden können, ist es besser, ein JDK zu installieren, da JMeter zum Aufzeichnen von HTTPS das Keytool- Dienstprogramm von JDK benötigt.

1.1.2 Betriebssysteme

JMeter ist zu 100 % eine Java-Anwendung und sollte auf jedem System mit einer kompatiblen Java-Implementierung korrekt ausgeführt werden.

Mit JMeter getestete Betriebssysteme können auf dieser Seite im JMeter-Wiki angezeigt werden.

Auch wenn Ihr Betriebssystem nicht auf der Wiki-Seite aufgeführt ist, sollte JMeter darauf laufen, vorausgesetzt, die JVM ist konform.

1.2 Optional

Wenn Sie eine JMeter-Entwicklung planen, benötigen Sie eines oder mehrere der unten aufgeführten optionalen Pakete.

1.2.1 Java-Compiler

Wenn Sie die JMeter-Quelle erstellen oder JMeter-Plugins entwickeln möchten, benötigen Sie ein vollständig kompatibles JDK 8 oder höher.

1.2.2 SAX-XML-Parser

JMeter wird mit dem Xerces XML-Parser von Apache geliefert . Sie haben die Möglichkeit, JMeter anzuweisen, einen anderen XML-Parser zu verwenden. Fügen Sie dazu die Klassen für den Drittanbieter-Parser in den Klassenpfad von JMeter ein und aktualisieren Sie die Datei jmeter.properties mit dem vollständigen Klassennamen der Parser-Implementierung.

1.2.3 E-Mail-Support

JMeter verfügt über umfangreiche E-Mail-Funktionen. Es kann E-Mails basierend auf Testergebnissen senden und verfügt über einen POP3(S)/IMAP(S)-Sampler. Es hat auch einen SMTP(S)-Sampler.

1.2.4 SSL-Verschlüsselung

Um einen Webserver mit SSL-Verschlüsselung (HTTPS) zu testen, erfordert JMeter, dass eine SSL-Implementierung bereitgestellt wird, wie dies bei Sun Java 1.4 und höher der Fall ist. Wenn Ihre Java-Version keine SSL-Unterstützung enthält, ist es möglich, eine externe Implementierung hinzuzufügen. Fügen Sie die erforderlichen Verschlüsselungspakete in den Klassenpfad von JMeter ein . Aktualisieren Sie außerdem system.properties , um den SSL-Anbieter zu registrieren.

JMeter HTTP verwendet standardmäßig TLS auf Protokollebene. Dies kann durch Bearbeiten der JMeter-Eigenschaft https.default.protocol in jmeter.properties oder user.properties geändert werden .

Die JMeter-HTTP-Sampler sind so konfiguriert, dass sie alle Zertifikate akzeptieren, ob vertrauenswürdig oder nicht, unabhängig von Gültigkeitszeiträumen usw. Dies soll maximale Flexibilität beim Testen von Servern ermöglichen.

Wenn der Server ein Client-Zertifikat benötigt, kann dieses bereitgestellt werden.

Es gibt auch den SSL-Manager für eine bessere Kontrolle der Zertifikate.

Der JMeter-Proxy-Server (siehe unten) unterstützt die Aufzeichnung von HTTPS (SSL)

Der SMTP-Sampler kann optional einen lokalen Truststore verwenden oder allen Zertifikaten vertrauen.

1.2.5 JDBC-Treiber

Sie müssen den JDBC-Treiber Ihres Datenbankanbieters zum Klassenpfad hinzufügen, wenn Sie JDBC-Tests durchführen möchten. Stellen Sie sicher, dass es sich bei der Datei um eine JAR-Datei und nicht um eine ZIP-Datei handelt.

1.2.6 JMS-Client

JMeter enthält jetzt die JMS-API von Apache Geronimo, sodass Sie nur die entsprechenden JMS-Client-Implementierungs-JARs vom JMS-Anbieter hinzufügen müssen. Einzelheiten entnehmen Sie bitte deren Dokumentation. Es kann auch einige Informationen im JMeter-Wiki geben .

1.2.7 Bibliotheken für ActiveMQ JMS

Sie müssen die JAR -Datei activemq-all-XXXjar zu Ihrem Klassenpfad hinzufügen, zB indem Sie sie im lib/ -Verzeichnis speichern .

Einzelheiten finden Sie auf der ActiveMQ -Erstkonfigurationsseite .

Weitere Informationen zum Installieren zusätzlicher JAR-Dateien finden Sie im Abschnitt JMeter-Klassenpfad .

1.3 Installation

Wir empfehlen, dass die meisten Benutzer die neueste Version verwenden .

Um einen Release-Build zu installieren, entpacken Sie einfach die ZIP-/TAR-Datei in das Verzeichnis, in dem JMeter installiert werden soll. Vorausgesetzt, Sie haben ein JRE/JDK korrekt installiert und die Umgebungsvariable JAVA_HOME gesetzt, müssen Sie nichts weiter tun.

Wenn der Verzeichnispfad Leerzeichen enthält, kann es (insbesondere im Client-Server-Modus) zu Problemen kommen.

Die Installationsverzeichnisstruktur sollte etwa so aussehen (wobei XY die Versionsnummer ist):

apache-jmeter-XY
apache-jmeter-XY/bin
apache-jmeter-XY/docs
apache-jmeter-XY/extras
apache-jmeter-XY/lib/
apache-jmeter-XY/lib/ext
apache-jmeter-XY/lib/junit
apache-jmeter-XY/Lizenzen
apache-jmeter-XY/druckbare_docs
Sie können das übergeordnete Verzeichnis (dh apache-jmeter-XY ) umbenennen, wenn Sie möchten, aber ändern Sie keinen der Unterverzeichnisnamen.

1.4 Ausführen von JMeter


Um JMeter auszuführen, führen Sie die Datei jmeter.bat (für Windows) oder jmeter (für Unix) aus. Diese Dateien befinden sich im bin- Verzeichnis. Nach kurzer Zeit sollte die JMeter GUI erscheinen.

Der GUI-Modus sollte nur zum Erstellen des Testskripts verwendet werden, der CLI-Modus (NON GUI) muss für Lasttests verwendet werden

Es gibt einige zusätzliche Skripte im bin- Verzeichnis, die Sie möglicherweise nützlich finden. Windows-Skriptdateien (die .CMD-Dateien erfordern Win2K oder höher):

jmeter.bat
Führen Sie JMeter aus (standardmäßig im GUI-Modus)
jmeterw.cmd
Ausführen von JMeter ohne die Windows-Shell-Konsole (standardmäßig im GUI-Modus)
jmeter-n.cmd
legen Sie eine JMX-Datei darauf ab, um einen CLI-Modus-Test auszuführen
jmeter-nr.cmd
legen Sie eine JMX-Datei darauf ab, um einen CLI-Modus-Test remote auszuführen
jmeter-t.cmd
Legen Sie eine JMX-Datei darauf ab, um sie im GUI-Modus zu laden
jmeter-server.bat
Starten Sie JMeter im Servermodus
Mirror-Server.cmd
führt den JMeter Mirror Server im CLI-Modus aus
shutdown.cmd
Führen Sie den Shutdown-Client aus, um eine Instanz im CLI-Modus ordnungsgemäß zu stoppen
stoptest.cmd
Führen Sie den Shutdown-Client aus, um eine Instanz im CLI-Modus abrupt zu stoppen
Der spezielle Name LAST kann mit jmeter-n.cmd , jmeter-t.cmd und jmeter-nr.cmd verwendet werden und bezeichnet den letzten Testplan, der interaktiv ausgeführt wurde.

Es gibt einige Umgebungsvariablen, die verwendet werden können, um die JVM-Einstellungen für JMeter anzupassen. Eine einfache Möglichkeit, diese festzulegen, besteht darin, eine Datei namens setenv.bat im bin - Verzeichnis zu erstellen. Eine solche Datei könnte wie folgt aussehen:

rem Dies ist der Inhalt von bin\setenv.bat,
rem wird von bin\jmeter.bat aufgerufen

set JVM_ARGS=-Xms1024m -Xmx1024m -Dpropname=Wert

JVM_ARGS kann verwendet werden, um JVM-Einstellungen im jmeter.bat-Skript zu überschreiben und wird beim Starten von JMeter gesetzt, z.

jmeter -t test.jmx …

Folgende Umgebungsvariablen können definiert werden:

DDRAW
JVM-Optionen zur Beeinflussung der Verwendung von Direct Draw, zB -Dsun.java2d.ddscale=true . Standard ist leer.
GC_ALGO
JVM-Garbage-Collector-Optionen. Standardmäßig -XX :+UseG1GC -XX:MaxGCPauseMillis=250 -XX:G1ReservePercent=20
HAUFEN
Beim Starten von JMeter verwendete JVM-Speichereinstellungen. Standardmäßig -Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m
JMETER_BIN
JMeter bin-Verzeichnis (muss mit \ enden ). Wert wird erraten, wenn setenv.bat aufgerufen wird.
JMETER_COMPLETE_ARGS
Falls gesetzt gibt an, dass nur JVM_ARGS und JMETER_OPTS verwendet werden sollen. Alle anderen Optionen wie HEAP und GC_ALGO werden ignoriert. Standard ist leer.
JMETER_HOME
Installationsverzeichnis. Wird aus dem Speicherort von jmeter.bat erraten
JMETER_LANGUAGE
Java-Laufzeitoptionen zur Angabe der verwendeten Sprache. Standardmäßig : -Duser.language="en" -Duser.region="EN"
JM_LAUNCH
Name der ausführbaren Java -Datei, z. B. java.exe (Standard) oder javaw.exe
JVM_ARGS
Java-Optionen, die beim Starten von JMeter verwendet werden sollen. Diese werden zuletzt zum Java-Befehl hinzugefügt. Standard ist leer

Un*x-Skriptdateien; sollte auf den meisten Linux/Unix-Systemen funktionieren:

jmeter
Führen Sie JMeter aus (standardmäßig im GUI-Modus). Definiert einige JVM-Einstellungen, die möglicherweise nicht für alle JVMs funktionieren.
jmeter-server
JMeter im Servermodus starten (ruft jmeter script mit entsprechenden Parametern auf)
jmeter.sh
sehr einfaches JMeter-Skript (Möglicherweise müssen Sie JVM-Optionen wie Speichereinstellungen anpassen).
Mirror-Server.sh
führt den JMeter Mirror Server im CLI-Modus aus
shutdown.sh
Führen Sie den Shutdown-Client aus, um eine Instanz im CLI-Modus ordnungsgemäß zu stoppen
stoptest.sh
Führen Sie den Shutdown-Client aus, um eine Instanz im CLI-Modus abrupt zu stoppen

Es kann erforderlich sein, einige Umgebungsvariablen festzulegen, um die von JMeter verwendete JVM zu konfigurieren. Diese Variablen können entweder direkt in der Shell gesetzt werden, indem das jmeter- Skript gestartet wird. Beispielsweise überschreibt das Setzen der Variable JVM_ARGS die meisten vordefinierten Einstellungen

JVM_ARGS="-Xms1024m -Xmx1024m" jmeter -t test.jmx [etc.]

überschreibt die HEAP-Einstellungen im Skript.

Um diese Variablen dauerhaft festzulegen, können Sie sie in einer Datei namens setenv.sh im Verzeichnis bin ablegen . Diese Datei wird beim Ausführen von JMeter durch Aufrufen des jmeter- Skripts bezogen. Ein Beispiel für bin/setenv.sh könnte so aussehen:

# Dies ist die Datei bin/setenv.sh,
# es wird von bin/jmeter bezogen

# Verwenden Sie einen größeren Heap, aber einen kleineren Metaspace als die Standardeinstellung
export HEAP="-Xms1G -Xmx1G -XMaxMetaspaceSize=192m"

# Versuchen Sie, das Gebietsschema aus dem Betriebssystem zu erraten. Der Raum als Wert ist Absicht!
export JMETER_LANGUAGE=" "

Folgende Umgebungsvariablen können definiert werden:

GC_ALGO
Java-Laufzeitoptionen zum Angeben des JVM-Garbage-Collection-Algorithmus. Standardmäßig -XX :+UseG1GC -XX:MaxGCPauseMillis=250 -XX:G1ReservePercent=20
HAUFEN
Java-Laufzeitoptionen für die Speicherverwaltung, die beim Start von JMeter verwendet werden. Standardmäßig -Xms1g -Xmx1g -X:MaxMetaspaceSize=256m
JAVA_HOME
Muss auf Ihre Java Development Kit-Installation verweisen. Erforderlich, um das mit dem Argument " debug " auszuführen. Auf einigen Betriebssystemen versucht JMeter sein Bestes, um den Speicherort der JVM zu erraten.
JMETER_COMPLETE_ARGS
Falls gesetzt gibt an, dass nur JVM_ARGS und JMETER_OPTS verwendet werden sollen. Alle anderen Optionen wie HEAP und GC_ALGO werden ignoriert. Standard ist leer.
JMETER_HOME
Kann auf Ihr JMeter-Installationsverzeichnis verweisen. Wenn es leer ist, wird es relativ zum jmeter- Skript gesetzt.
JMETER_LANGUAGE
Java-Laufzeitoptionen zur Angabe der verwendeten Sprache. Standardmäßig -Duser.language =en -Duser.region=EN
JMETER_OPTS
Java-Laufzeitoptionen, die beim Start von JMeter verwendet werden. Spezielle Optionen für Betriebssysteme können von JMeter hinzugefügt werden.
JRE_HOME
Muss auf Ihre Java Runtime-Installation verweisen. Standardmäßig JAVA_HOME , wenn leer. Wenn JRE_HOME und JAVA_HOME beide leer sind, versucht JMeter, JAVA_HOME zu erraten . Wenn JRE_HOME und JAVA_HOME beide gesetzt sind, wird JAVA_HOME verwendet.
JVM_ARGS
Java-Optionen, die beim Starten von JMeter verwendet werden sollen. Diese werden vor JMETER_OPTS und nach den anderen JVM-Optionen hinzugefügt. Standard ist leer

1.4.1 Klassenpfad von JMeter

JMeter findet automatisch Klassen aus Jars in den folgenden Verzeichnissen:

JMETER_HOME/lib
verwendet für Utility-Gläser
JMETER_HOME/lib/ext
Wird für JMeter-Komponenten und -Plugins verwendet

Wenn Sie neue JMeter-Komponenten entwickelt haben, sollten Sie diese jaren und das jar in das lib/ext - Verzeichnis von JMeter kopieren. JMeter findet automatisch JMeter-Komponenten in allen hier gefundenen JARs. Verwenden Sie lib/ext nicht für Utility-Jars oder Abhängigkeits-Jars, die von den Plug-ins verwendet werden; Es ist nur für JMeter-Komponenten und -Plugins vorgesehen.

Wenn Sie keine JMeter -Plug-in-Jars im Verzeichnis lib/ext ablegen möchten , definieren Sie die Eigenschaft search_paths in jmeter.properties .

Utility- und Abhängigkeits-Jars (Bibliotheken usw.) können im lib- Verzeichnis abgelegt werden.

Wenn Sie solche JAR-Dateien nicht in das lib - Verzeichnis stellen möchten, definieren Sie die Eigenschaft user.classpath oder plugin_dependency_paths in jmeter.properties . Nachfolgend finden Sie eine Erläuterung der Unterschiede.

Andere JAR-Dateien (wie JDBC, JMS-Implementierungen und alle anderen Unterstützungsbibliotheken, die vom JMeter-Code benötigt werden) sollten im Verzeichnis lib abgelegt werden – nicht im Verzeichnis lib/ext – oder zu user.classpath hinzugefügt werden .

JMeter findet nur .jar- Dateien, keine .zip .

Sie können auch Dienstprogramm-JAR-Dateien in $JAVA_HOME/jre/lib/ext installieren oder die Eigenschaft user.classpath in jmeter.properties festlegen

Beachten Sie, dass das Festlegen der Umgebungsvariablen CLASSPATH keine Auswirkung hat. Dies liegt daran, dass JMeter mit " java -jar " gestartet wird und der Java-Befehl stillschweigend die CLASSPATH- Variable und die -classpath / -cp- Optionen ignoriert, wenn -jar verwendet wird.

Dies tritt bei allen Java-Programmen auf, nicht nur bei JMeter.

1.4.2 Testplan aus Vorlage erstellen

Sie haben die Möglichkeit, einen neuen Testplan aus einer vorhandenen Vorlage zu erstellen.

Verwenden Sie dazu das Menü Datei  →  Vorlagen… oder das Symbol Vorlagen:

Symbolelement „Vorlagen“.
Symbolelement „Vorlagen“.

Ein Popup erscheint, Sie können dann eine Vorlage aus der Liste auswählen:

Vorlagen-Popup
Vorlagen-Popup

Einige Vorlagen erfordern möglicherweise Parametereingaben vom Benutzer. Für diese erscheint nach einem Klick auf die Schaltfläche Erstellen ein neues Fenster wie folgt:

Parameterfenster
Parameterfenster

Wenn Sie mit den Parametern fertig sind, klicken Sie auf die Schaltfläche Validieren und die Vorlage wird erstellt.

Eine Dokumentation für jede Vorlage erklärt, was zu tun ist, nachdem der Testplan aus der Vorlage erstellt wurde.

Sie können Ihre eigenen Vorlagen gemäß der Dokumentation hier erstellen

1.4.3 Verwendung von JMeter hinter einem Proxy

Wenn Sie hinter einer Firewall/einem Proxyserver testen, müssen Sie JMeter möglicherweise den Hostnamen und die Portnummer der Firewall/des Proxyservers mitteilen. Führen Sie dazu die Datei jmeter[.bat] über eine Befehlszeile mit den folgenden Parametern aus:

-E
[Zu verwendendes Proxy-Schema – optional – für Nicht-http]
-H
[Hostname oder IP-Adresse des Proxy-Servers]
-P
[Proxyserver-Port]
-N
[Nicht-Proxy-Hosts] (zB *.apache.org|localhost )
-u
[Benutzername für Proxy-Authentifizierung - falls erforderlich]
-a
[Passwort für die Proxy-Authentifizierung - falls erforderlich]
Beispiel :
jmeter -E https -H my.proxy.server -P 8000 -u Benutzername -a Passwort -N localhost

Sie können auch --proxyScheme , --proxyHost , --proxyPort , --username und --password als Parameternamen verwenden

Auf einer Befehlszeile bereitgestellte Parameter können für andere Benutzer auf dem System sichtbar sein.

Wenn das Proxy-Schema bereitgestellt wird, legt JMeter die folgenden Systemeigenschaften fest:

  • http.proxyScheme

Wenn der Proxy-Host und -Port bereitgestellt werden, legt JMeter die folgenden Systemeigenschaften fest:

  • http.proxyHost
  • http.proxyPort
  • https.proxyHost
  • https.proxyPort

Der für einen Proxy verwendete Benutzer und das Kennwort können über die Systemeigenschaften http.proxyUser und http.proxyUser angegeben werden . Sie werden von den oben genannten Argumenten oder Werten überschrieben, die in den HTTP-Samplern festgelegt wurden.

Wenn eine Nicht-Proxy-Hostliste bereitgestellt wird, legt JMeter die folgenden Systemeigenschaften fest:

  • http.nonProxyHosts
  • https.nonProxyHosts

Wenn Sie also nicht sowohl HTTP- als auch HTTPS-Proxys festlegen möchten, können Sie die entsprechenden Eigenschaften in system.properties definieren, anstatt die Befehlszeilenparameter zu verwenden.

Proxy-Einstellungen können auch in einem Testplan definiert werden, indem entweder die Standardkonfiguration für HTTP-Anforderungen oder die Sampler-Elemente für HTTP -Anforderungen verwendet werden.

JMeter hat auch einen eigenen eingebauten Proxy-Server, den HTTP(S) Test Script Recorder . Dies wird nur zum Aufzeichnen von HTTP- oder HTTPS-Browsersitzungen verwendet. Dies ist nicht mit den oben beschriebenen Proxy-Einstellungen zu verwechseln, die verwendet werden, wenn JMeter selbst HTTP- oder HTTPS-Anfragen stellt.

1.4.4 CLI-Modus (Befehlszeilenmodus wurde NON-GUI-Modus genannt)

Für Lasttests müssen Sie JMeter in diesem Modus (ohne GUI) ausführen, um optimale Ergebnisse zu erzielen. Verwenden Sie dazu die folgenden Befehlsoptionen:

-n
Dies gibt an, dass JMeter im CLI-Modus ausgeführt werden soll
-t
[Name der JMX-Datei, die den Testplan enthält].
-l
[Name der JTL-Datei zum Protokollieren der Probenergebnisse].
-j
[Name der JMeter-Ausführungsprotokolldatei].
-r
Führen Sie den Test auf den Servern aus, die durch die JMeter-Eigenschaft " remote_hosts " angegeben sind.
-R
[Liste der Remote-Server] Führen Sie den Test auf den angegebenen Remote-Servern aus
-g
[Pfad zur CSV-Datei] Nur Berichts-Dashboard generieren
-e
Berichts-Dashboard nach Belastungstest generieren
Ausgabeordner, in dem das Berichts-Dashboard nach dem Belastungstest generiert werden soll. Ordner darf nicht existieren oder leer sein

Mit dem Skript können Sie auch die optionalen Firewall-/Proxy-Serverinformationen angeben:

-H
[Hostname oder IP-Adresse des Proxy-Servers]
-P
[Proxyserver-Port]
Beispiel
jmeter -n -t my_test.jmx -l log.jtl -H my.proxy.server -P 8000

Wenn die Eigenschaft jmeterengine.stopfail.system.exit auf true gesetzt ist (Standard ist false ), ruft JMeter System.exit(1) auf , wenn es nicht alle Threads stoppen kann. Normalerweise ist dies nicht erforderlich.

1.4.5 Servermodus

Führen Sie für verteilte Tests JMeter im Servermodus auf dem/den Remote-Knoten aus und steuern Sie dann den/die Server über die GUI. Sie können auch den CLI-Modus verwenden, um Remote-Tests auszuführen. Um den/die Server zu starten, führen Sie jmeter-server[.bat] auf jedem Serverhost aus.

Mit dem Skript können Sie auch die optionalen Firewall-/Proxy-Serverinformationen angeben:

-H
[Hostname oder IP-Adresse des Proxy-Servers]
-P
[Proxyserver-Port]
Beispiel :
jmeter-server -H mein.proxy.server -P 8000

Wenn Sie möchten, dass der Server beendet wird, nachdem ein einzelner Test ausgeführt wurde, definieren Sie die JMeter-Eigenschaft server.exitaftertest=true .

Verwenden Sie den folgenden Befehl, um den Test vom Client im CLI-Modus auszuführen:

jmeter -n -t testplan.jmx -r [-Gprop=val] [-Gglobal.properties] [-X]
wo:
-G
wird verwendet, um JMeter-Eigenschaften zu definieren, die in den Servern festgelegt werden sollen
-X
bedeutet, die Server am Ende des Tests zu verlassen
-Rserver1,server2
kann anstelle von -r verwendet werden , um eine Liste der zu startenden Server bereitzustellen. Überschreibt remote_hosts , definiert die Eigenschaft jedoch nicht.

Wenn die Eigenschaft jmeterengine.remote.system.exit auf true gesetzt ist (Standard ist false ), ruft JMeter System.exit(0) auf , nachdem RMI am Ende eines Tests gestoppt wurde. Normalerweise ist dies nicht erforderlich.

1.4.6 Überschreiben von Eigenschaften über die Befehlszeile

Java-Systemeigenschaften und JMeter-Eigenschaften können direkt auf der Befehlszeile überschrieben werden (anstatt jmeter.properties zu ändern ). Verwenden Sie dazu die folgenden Optionen:

-D[Eigenschaftsname]=[Wert]
definiert einen Java-Systemeigenschaftswert.
-J[Eigenschaftsname]=[Wert]
definiert eine lokale JMeter-Eigenschaft.
-G[Eigenschaftsname]=[Wert]
definiert eine JMeter-Eigenschaft, die an alle Remote-Server gesendet werden soll.
-G[Eigenschaftsdatei]
definiert eine Datei mit JMeter-Eigenschaften, die an alle Remote-Server gesendet werden soll.
-L[Kategorie]=[Priorität]
setzt eine Protokollierungseinstellung außer Kraft und setzt eine bestimmte Kategorie auf die angegebene Prioritätsstufe.

Das Flag -L kann auch ohne den Kategorienamen verwendet werden, um die Root-Protokollierungsebene festzulegen.

Beispiele :

jmeter -Duser.dir=/home/mstover/jmeter_stuff \
    -Jremote_hosts=127.0.0.1 -Ljmeter.engine=DEBUG
jmeter-LDEBUG
Die Befehlszeileneigenschaften werden früh beim Start verarbeitet, aber nachdem das Protokollierungssystem eingerichtet wurde.

1.4.7 Protokollierung und Fehlermeldungen

Seit 3.2 wird die JMeter-Protokollierung nicht mehr über Eigenschaftsdateien wie jmeter.properties konfiguriert, sondern stattdessen über eine Apache Log4j 2 -Konfigurationsdatei ( log4j2.xml standardmäßig in dem Verzeichnis, aus dem JMeter gestartet wurde). . Außerdem MUSS jeder Code, einschließlich JMeter und Plugins, die SLF4J- Bibliothek verwenden, um seit 3.2 Protokolle zu hinterlassen.

Hier ist eine log4j2.xml -Beispieldatei , die zwei Protokoll-Appender und Protokollierer für jede Kategorie definiert.

<Konfigurationsstatus="WARN" packages="org.apache.jmeter.gui.logging">

  <Appender>

    <!-- Der Hauptprotokolldatei-Appender für jmeter.log in dem Verzeichnis, aus dem JMeter standardmäßig gestartet wurde. -->
    <Dateiname="jmeter-log" fileName="${sys:jmeter.logfile:-jmeter.log}" append="false">
      <MusterLayout>
        <Muster>%d %p %c{1.}: %m%n</Muster>
      </MusterLayout>
    </Datei>

    <!-- Log-Appender für GUI Log Viewer. Siehe unten. -->
    <GuiLogEvent-Name="gui-log-event">
      <MusterLayout>
        <Muster>%d %p %c{1.}: %m%n</Muster>
      </MusterLayout>
    </GuiLogEvent>

  </Appender>

  <Logger>

    <!-- Root-Logger -->
    <Stammebene="info">
      <AppenderRef ref="jmeter-log" />
      <AppenderRef ref="gui-log-event" />
    </Root>

    <!-- SNIP -->

    <!--
      # Apache HttpClient-Protokollierungsbeispiele
    -->
    <!-- # Header-Wire + Kontextprotokollierung aktivieren - Optimal für Debugging -->
    <!--
    <Loggername="org.apache.http" level="debug" />
    <Loggername="org.apache.http.wire" level="error" />
    -->

    <!-- SNIP -->

  </Logger>

</Konfiguration>

Wenn Sie also beispielsweise die Protokollebene für die Kategorie „ org.apache.http “ in die Debug-Ebene ändern möchten, können Sie einfach das folgende Protokollierungselement in der Datei „log4j2.xml “ hinzufügen (oder auskommentieren) , bevor Sie JMeter starten.

  <Logger>
    <!-- SNIP -->
    <Loggername="org.apache.http" level="debug" />
    <!-- SNIP -->
  </Logger>

Weitere Einzelheiten zur Konfiguration der Datei log4j2.xml finden Sie auf der Apache Log4j 2-Konfigurationsseite .

Die Protokollebene für bestimmte Kategorien oder Root-Logger kann auch direkt in der Befehlszeile überschrieben werden (anstatt log4j2.xml zu ändern ). Verwenden Sie dazu die folgenden Optionen:

-L[Kategorie]=[Priorität]
Überschreibt eine Protokollierungseinstellung und setzt eine bestimmte Kategorie auf die angegebene Prioritätsstufe. Seit 3.2 wird empfohlen, einen vollständigen Kategorienamen zu verwenden (z. B. org.apache.jmeter oder com.example.foo ), aber wenn der Kategoriename entweder mit jmeter oder jorphan beginnt , org.apache. wird intern der Eingabe des Kategorienamens vorangestellt, um aus Gründen der Abwärtskompatibilität einen vollständigen Kategorienamen (dh org.apache.jmeter oder org.apache.jorphan ) zu erstellen.

Beispiele :

jmeter -Ljmeter.engine=DEBUG
jmeter -Lorg.apache.jmeter.engine=DEBUG
jmeter -Lcom.example.foo=DEBUG
jmeter-LDEBUG

Unterschiede in der Protokollierung: Alte vs. neue Praktiken :

Da JMeter seit 3.2 SLF4J als Logging-API und Apache Log4j 2 als Logging-Framework verwendet, kann nicht jeder Log-Level, der vor 3.2 verwendet wurde, genau mit einem der neuen verfügbaren Log-Level übereinstimmen, die von SLF4J/Log4j2 bereitgestellt werden. Beachten Sie daher bitte die folgenden Unterschiede und neuen empfohlenen Vorgehensweisen, wenn Sie vorhandene Protokollierungskonfigurationen und Protokollierungscode migrieren müssen.

Kategorie Alte Praktiken vor 3.2 Neue Praktiken seit 3.2
Logger-Referenz Logger-Referenz über LoggingManager :
LoggingManager.getLoggerFor (String-Kategorie);
LoggingManager.getLoggerForClass();
Verwenden Sie die SLF4J-API entweder mit Kategorie oder expliziter Klasse:
LoggerFactory.getLogger (String-Kategorie);
LoggerFactory.getLogger (Foo.class);
Protokollebenen in Konfigurations- oder Befehlszeilenargumenten Alte Protokollebenen:
  • DEBUGGEN
  • DIE INFO
  • WARNEN
  • ERROR
  • FATALER FEHLER
  • KEINER
Zuordnung zu neuen Ebenen durch SLF4J/Log4j2:
  • DEBUGGEN
  • DIE INFO
  • WARNEN
  • ERROR
  • ERROR
  • AUS
Da FATAL_ERROR von der SLF4J-API nicht unterstützt wird, wird es stattdessen als ERROR behandelt, damit vorhandener Code nicht beschädigt wird. Es gibt auch die FATAL- Log-Level-Option.
TRACE Level, das weniger spezifisch ist als DEBUG , wird seit 3.2 zusätzlich unterstützt. Weitere Informationen finden Sie in der SLF4J- oder Apache Log4J 2-Dokumentation.
JMeter verwendet im Allgemeinen keine Popup-Dialogfelder für Fehler, da diese die Ausführung von Tests stören würden. Es meldet auch keinen Fehler für eine falsch geschriebene Variable oder Funktion; stattdessen wird die Referenz einfach so verwendet, wie sie ist. Weitere Informationen finden Sie unter Funktionen und Variablen .

Wenn JMeter während eines Tests einen Fehler erkennt, wird eine Meldung in die Protokolldatei geschrieben. Der Name der Protokolldatei wird in der Datei log4j2.xml definiert (oder mit der Option -j , siehe unten). Es ist standardmäßig jmeter.log und befindet sich in dem Verzeichnis, aus dem JMeter gestartet wurde.

Das Menü Options  →  Log Viewer zeigt die Protokolldatei in einem unteren Bereich des JMeter-Hauptfensters an.

Im GUI-Modus wird die Anzahl der in der Protokolldatei protokollierten Fehler/schwerwiegenden Meldungen oben rechts angezeigt.

Fehler/Schwerwiegender Zähler
Fehler/Schwerwiegender Zähler

Die Befehlszeilenoption -j jmeterlogfile ermöglicht die Verarbeitung nach dem Lesen der anfänglichen Eigenschaftendatei und vor der Verarbeitung weiterer Eigenschaften. Daher kann der Standardwert von jmeter.log überschrieben werden. Die jmeter-Skripte, die einen Testplannamen als Parameter verwenden (z. B. jmeter-n.cmd ), wurden aktualisiert, um die Protokolldatei mit dem Testplannamen zu definieren, z. B. für den Testplan Test27.jmx ist die Protokolldatei auf Test27 festgelegt. anmelden .

Unter Windows wird die Datei möglicherweise nur als jmeter angezeigt , es sei denn, Sie haben Windows so eingestellt, dass Dateierweiterungen angezeigt werden. [Was Sie sowieso tun sollten, damit Viren und andere Schädlinge, die sich als Textdateien ausgeben, leichter erkannt werden …]

Neben der Aufzeichnung von Fehlern zeichnet die Datei jmeter.log einige Informationen über den Testlauf auf. Zum Beispiel:

01.03.2017 12:19:20,314 INFO oajJMeter: Version 3.2.20170301
01.03.2017 12:19:45,314 INFO oajgaLoad: Datei wird geladen: c:\mytestfiles\BSH.jmx
01.03.2017 12:19:52,328 INFO oajeStandardJMeterEngine: Test läuft!
01.03.2017 12:19:52.384 INFO oajeStandardJMeterEngine: Starten von 1 Threads für Gruppe BSH. Rampe auf = 1.
01.03.2017 12:19:52.485 INFO oajeStandardJMeterEngine: Bei Fehler fortfahren
01.03.2017 12:19:52.589 INFO oajtJMeterThread: Thread BSH1-1 gestartet
01.03.2017 12:19:52.590 INFO oajtJMeterThread: Thread BSH1-1 ist fertig
01.03.2017 12:19:52,691 INFO oajeStandardJMeterEngine: Test ist beendet

Die Protokolldatei kann hilfreich sein, um die Ursache eines Fehlers zu ermitteln, da JMeter einen Test nicht unterbricht, um einen Fehlerdialog anzuzeigen.

1.4.8 Vollständige Liste der Befehlszeilenoptionen

Der Aufruf von JMeter als „ jmeter -? “ druckt eine Liste aller Befehlszeilenoptionen. Diese sind unten dargestellt.

    --?
        Befehlszeilenoptionen drucken und beenden
    -h, --Hilfe
        Nutzungsinformationen drucken und beenden
    -v, --version
        Ausgabe der Versionsinformationen und Beenden
    -p, --profil <Argument>
        die zu verwendende jmeter-Property-Datei
    -q, --addprop <Argument>
        zusätzliche JMeter-Property-Datei(en)
    -t, --testfile <Argument>
        die jmeter test(.jmx)-Datei, die ausgeführt werden soll
    -l, --logfile <Argument>
        die Datei, in der Proben protokolliert werden sollen
    -i, --jmeterlogconf <Argument>
        jmeter-Protokollierungskonfigurationsdatei (log4j2.xml)
    -j, --jmeterlogfile <Argument>
        jmeter-Ausführungsprotokolldatei (jmeter.log)
    -n, --nongui
        Führen Sie JMeter im Nicht-GUI-Modus aus
    -s, --server
        Führen Sie den JMeter-Server aus
    -H, --proxyHost <Argument>
        Legen Sie einen Proxy-Server fest, den JMeter verwenden soll
    -P, --proxyPort <Argument>
        Legen Sie den Proxy-Server-Port fest, den JMeter verwenden soll
    -N, --nonProxyHosts <Argument>
        Liste der Nicht-Proxy-Hosts festlegen (z. B. *.apache.org|localhost)
    -u, --username <Argument>
        Legen Sie den Benutzernamen für den Proxy-Server fest, den JMeter verwenden soll
    -a, --password <Argument>
        Legen Sie das Passwort für den Proxy-Server fest, den JMeter verwenden soll
    -J, --jmeterproperty <Argument>=<Wert>
        Definieren Sie zusätzliche JMeter-Eigenschaften
    -G, --globalproperty <Argument>=<Wert>
        Globale Eigenschaften definieren (an Server gesendet)
        zB -Gport=123
         oder -Gglobal.properties
    -D, --systemproperty <Argument>=<Wert>
        Definieren Sie zusätzliche Systemeigenschaften
    -S, --systemPropertyFile <Argument>
        zusätzliche Systemeigenschaftsdatei(en)
    -f, --forceDeleteResultFile
        Erzwingen Sie das Löschen vorhandener Ergebnisdateien und des Ordners für Webberichte, falls vorhanden, bevor Sie mit dem Test beginnen
    -L, --loglevel <Argument>=<Wert>
        [category=]level zB jorphan=INFO, jmeter.util=DEBUG oder com.example.foo=WARN
    -r, --runremote
        Remote-Server starten (wie in remote_hosts definiert)
    -R, --remotestart <Argument>
        Starten Sie diese Remote-Server (überschreibt remote_hosts)
    -d, --homedir <Argument>
        das zu verwendende jmeter-Home-Verzeichnis
    -X, --remoteexit
        Beenden Sie die Remote-Server am Ende des Tests (CLI-Modus)
    -g, --reportonly <Argument>
        Generieren Sie nur das Berichts-Dashboard aus einer Testergebnisdatei
    -e, --reportatendofloadtests
        Berichts-Dashboard nach Belastungstest generieren
    -o, --reportoutputfolder <Argument>
        Ausgabeordner für das Berichts-Dashboard

Hinweis: Der Name der JMeter-Protokolldatei wird als SimpleDateFormat (auf das aktuelle Datum angewendet) formatiert, wenn er gepaarte einfache Anführungszeichen enthält, z. B. ' jmeter_'yyyyMMddHHmmss'.log '

Wenn der spezielle Name LAST für die Flags -t , -j oder -l verwendet wird, dann nimmt JMeter dies als den letzten Testplan, der im interaktiven Modus ausgeführt wurde.

1.4.9 Herunterfahren im CLI-Modus

Vor Version 2.5.1 hat JMeter System.exit() aufgerufen, wenn ein CLI-Modustest abgeschlossen wurde. Dies verursachte Probleme für Anwendungen, die JMeter direkt aufrufen, sodass JMeter System.exit() für einen normalen Testabschluss nicht mehr aufruft. [Einige schwerwiegende Fehler können immer noch System.exit() aufrufen ] JMeter wird alle Nicht-Daemon-Threads beenden, die es startet, aber es ist möglich, dass einige Nicht-Daemon-Threads noch bestehen bleiben; diese verhindern, dass die JVM beendet wird. Um diese Situation zu erkennen, startet JMeter kurz vor dem Beenden einen neuen Daemon-Thread. Dieser Daemon-Thread wartet eine kurze Weile; Wenn es von der Wartezeit zurückkehrt, konnte die JVM eindeutig nicht beendet werden, und der Thread gibt eine Nachricht aus, um den Grund anzugeben.

Die Eigenschaft jmeter.exit.check.pause kann verwendet werden, um die Standardpause von 2000 ms (2 Sekunden) zu überschreiben. Wenn der Wert auf 0 gesetzt ist, startet JMeter den Daemon-Thread nicht.

1.5 Konfigurieren von JMeter

Wenn Sie die Eigenschaften ändern möchten, mit denen JMeter ausgeführt wird, müssen Sie entweder die user.properties im /bin - Verzeichnis ändern oder Ihre eigene Kopie der jmeter.properties erstellen und in der Befehlszeile angeben.

Hinweis: Sie können zusätzliche JMeter-Eigenschaften in der Datei definieren, die durch die JMeter-Eigenschaft user.properties definiert ist, die den Standardwert user.properties hat . Die Datei wird automatisch geladen, wenn sie im aktuellen Verzeichnis oder im bin-Verzeichnis von JMeter gefunden wird. Ebenso wird system.properties verwendet, um Systemeigenschaften zu aktualisieren.

Parameter

Attribut
Beschreibung
Erforderlich
ssl.provider
Sie können die Klasse für Ihre SSL-Implementierung angeben, wenn Sie die integrierte Java-Implementierung nicht verwenden möchten.
Nein
xml.parser
Sie können eine Implementierung als Ihren XML-Parser angeben. Der Standardwert ist: org.apache.xerces.parsers.SAXParser
Nein
remote_hosts
Durch Kommas getrennte Liste von Remote-JMeter-Hosts (oder host:port , falls erforderlich). Wenn Sie JMeter in einer verteilten Umgebung ausführen, listen Sie die Computer auf, auf denen JMeter-Remoteserver ausgeführt werden. Dadurch können Sie diese Server über die GUI dieser Maschine steuern
Nein
not_in_menu
Eine Liste von Komponenten, die Sie nicht in den Menüs von JMeter sehen möchten. Da JMeter immer mehr Komponenten hinzufügt, möchten Sie vielleicht Ihr JMeter so anpassen, dass nur die Komponenten angezeigt werden, an denen Sie interessiert sind mehr in den Menüs erscheinen.
Nein
Suchpfade
Liste der Pfade (getrennt durch ; ), die JMeter nach JMeter-Plugin-Klassen durchsucht, beispielsweise zusätzliche Sampler. Ein Pfadelement kann entweder eine JAR-Datei oder ein Verzeichnis sein. Jede JAR-Datei in einem solchen Verzeichnis wird automatisch in search_paths aufgenommen , JAR-Dateien in Unterverzeichnissen werden ignoriert. Der angegebene Wert gilt zusätzlich zu allen im Verzeichnis lib/ext gefundenen JAR-Dateien .
Nein
user.classpath
Liste der Pfade, die JMeter nach Dienstprogramm- und Plugin-Abhängigkeitsklassen durchsucht. Verwenden Sie Ihren Plattform-Pfadtrenner, um mehrere Pfade zu trennen. Ein Pfadelement kann entweder eine JAR-Datei oder ein Verzeichnis sein. Jede JAR-Datei in einem solchen Verzeichnis wird automatisch in user.classpath aufgenommen , JAR-Dateien in Unterverzeichnissen werden ignoriert. Der angegebene Wert gilt zusätzlich zu allen im lib-Verzeichnis gefundenen JAR-Dateien. Alle Einträge werden zum Klassenpfad des Systemklassenladers und auch zum Pfad des internen JMeter-Laders hinzugefügt.
Nein
plugin_dependency_paths
Liste der Pfade (getrennt durch ; ), die JMeter nach Dienstprogramm- und Plugin-Abhängigkeitsklassen durchsucht. Ein Pfadelement kann entweder eine JAR-Datei oder ein Verzeichnis sein. Jede JAR-Datei in einem solchen Verzeichnis wird automatisch in plugin_dependency_paths aufgenommen , JAR-Dateien in Unterverzeichnissen werden ignoriert. Der angegebene Wert gilt zusätzlich zu allen JAR-Dateien, die im lib - Verzeichnis gefunden oder von der Eigenschaft user.classpath angegeben werden . Alle Einträge werden nur zum Pfad des internen Ladeprogramms von JMeter hinzugefügt. Für Plugin-Abhängigkeiten sollte die Verwendung von plugin_dependency_paths gegenüber user.classpath bevorzugt werden .
Nein
user.properties
Name der Datei, die zusätzliche JMeter-Eigenschaften enthält. Diese werden nach der anfänglichen Eigenschaftsdatei hinzugefügt, aber bevor die Optionen -q und -J verarbeitet werden.
Nein
Systemeigenschaften
Name der Datei, die zusätzliche Systemeigenschaften enthält. Diese werden hinzugefügt, bevor die Optionen -S und -D verarbeitet werden.
Nein

Die Befehlszeilenoptionen und Eigenschaftendateien werden in der folgenden Reihenfolge verarbeitet:

  1. -p Profil
  2. jmeter.properties (oder die Datei aus der Option -p ) wird dann geladen
  3. -j Protokolldatei
  4. Die Protokollierung wird initialisiert
  5. user.properties wird geladen
  6. system.properties wird geladen
  7. alle anderen Befehlszeilenoptionen werden verarbeitet

Siehe auch die Kommentare in den Dateien jmeter.properties , user.properties und system.properties für weitere Informationen zu anderen Einstellungen, die Sie ändern können.

Go to top