Technologieaustausch

Jmeter verteilt (4)

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. GUI

Die GUI von jmeter wird hauptsächlich zum Debuggen von Skripten verwendet

1. Erstellen Sie zunächst das Skript über die GUI

Erstellen Sie zunächst ein Skript
Demo: Wie schreibt man eine gemischte Szene?
Verwenden Sie eine Geschäftskennzahl von 211

①Starten Sie den Datenbankdienst

Datenbankdienste: einschließlich MySQL, Redis
MySQL-Port-Standard 3306

netstat -lntp | grep 3306
  • 1

Im Überwachungszustand ist 6379 der Standardport von Redis

netstat -lntp | grep 6379
  • 1

Projektdienstport 18089

netstat -lntp | grep 18089
  • 1

②Access-Schnittstellendokument-Prahlerei

211 kann in zwei Stresstestdienste umgewandelt werden

Eine besteht darin, sich zu registrieren, die andere darin, sich zu registrieren und anzumelden, um Produkte hinzuzufügen.
Beide sind 50 %

③Thread-Gruppe hinzufügen

jmeter – Thread-Gruppe hinzufügen-Thread-Benutzer-Thread-Gruppe hinzufügen

Konvertieren Sie zwei Stresstestdienste

④Durchsatzregler hinzufügen

jmeter – Add-Logic-Controller – Durchsatzcontroller

Konvertieren Sie zwei Stresstestdienste.
Das erste Stresstest-Geschäft umfasst die Registrierung, Anmeldung und das Hinzufügen von Produkten
Das zweite Stresstest-Geschäft ist die Registrierung

Fügen Sie hier eine Bildbeschreibung ein

Jeweils 50 %
Fügen Sie hier eine Bildbeschreibung ein

⑤Sampler-HTTP-Anfrage hinzufügen

jmeter-add-sampler-http-request
Konvertieren Sie zwei Stresstestdienste
Fügen Sie hier eine Bildbeschreibung ein

Das erste Stresstest-Geschäft umfasst die Registrierung, Anmeldung und das Hinzufügen von Produkten

Fügen Sie hier eine Bildbeschreibung ein

Fügen Sie hier eine Bildbeschreibung ein

Das zweite Geschäft ist die Registrierung

Schreiben Sie gemäß Registrierungs-Swagger, geben Sie Parameter ein
Fügen Sie hier eine Bildbeschreibung ein
Im Allgemeinen müssen Sie die ID beim Einfügen nicht angeben.
Addtime muss ebenfalls nicht ausgefüllt werden
Kopieren Sie die Parameterdaten und fügen Sie sie in jmeter ein
Fügen Sie hier eine Bildbeschreibung ein

Pfad basierend auf der URL
Fügen Sie hier eine Bildbeschreibung ein

Fügen Sie hier eine Bildbeschreibung ein

Fügen Sie hier eine Bildbeschreibung ein

⑥Http-Header-Manager hinzufügen,

Sie bestehen alle JSON
Fügen Sie hier eine Bildbeschreibung ein

Fügen Sie hier eine Bildbeschreibung ein

⑦Fügen Sie den Standardwert für die HTTP-Anfrage hinzu

Geben Sie IP und Port gemäß dem Schnittstellendokument ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein

⑧Fügen Sie einen Listener hinzu und zeigen Sie den Ergebnisbaum an

Fügen Sie hier eine Bildbeschreibung ein

⑨Behauptung hinzufügen

Es ist am besten, Behauptungen hinzuzufügen

Fügen Sie hier eine Bildbeschreibung einFügen Sie hier eine Bildbeschreibung ein

2. Nicht-GUI

-nJmeter im Nicht-GUI-Modus ausführen
-t führt den Speicherort der Testdatei aus. Er befindet sich nicht im aktuellen Pfad.
-l gibt die generierte Ergebnisdatei an, bei der es sich um eine JTL-Datei handelt
-e Generieren Sie nach Abschluss des Tests einen Testbericht
-o gibt den Speicherort des Testbericht-HTML an
-r Fernstart

1. Einzelmaschinenpresse

①Bewerben Sie sich für die Presse

Installieren Sie JDK und Jmeter unter Linux Press
Unter usr/local installieren
Laden Sie jmeter direkt im Fenster auf die Linux-Presse hoch, da auch die am Debugging-Skript beteiligten Plug-Ins verfügbar sind.
Fügen Sie hier eine Bildbeschreibung ein

②Laden Sie das Skript zur Presse hoch

Hinweis: Wenn das Skript eine CSV-Parameterdatei umfasst, müssen Sie die CSV-Parameterdatei in das bin-Verzeichnis von jmeter unter Linux hochladen.
Aggregationsberichte und Listener müssen vor dem Hochladen deaktiviert werden

5 Threads, alle 30 Sekunden einen hinzufügen, also 150

Die Dauer muss größer sein als die Rang-Up-Zeit von 150. Wenn die Dauer weitere 50 Sekunden beträgt, stellen Sie sie auf 200 ein.
Fügen Sie hier eine Bildbeschreibung ein

Nachdem der Jmeter-Upload erfolgreich war, überprüfen Sie die Jmeter-Version und ob sie verfügbar ist.

Fügen Sie hier eine Bildbeschreibung ein

③Initialisierung

Es gibt zwei Orte
Zunächst muss der Pfad zum Speichern des Testskripts ein Verzeichnis zum Speichern des HTML-Berichts erstellen.

Fügen Sie hier eine Bildbeschreibung ein
Vor der Ausführung des Skripts muss das res-Verzeichnis leer sein
Zweitens bereinigen Sie die Daten in der Datenbanktabelle, ohne die vorhandenen Daten zu berücksichtigen.
Fügen Sie hier eine Bildbeschreibung ein

④Skript ausführen

Fügen Sie hier eine Bildbeschreibung ein

⑤Ergebnisse anzeigen

Ergebnis
548 Anfragen in 13 Sekunden abgeschlossen

Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein

Gesamtbericht öffnen
Die Anzahl der ko-fehlgeschlagenen Anfragen

Fügen Sie hier eine Bildbeschreibung ein
ReaktionszeitReaktionszeit
Fügen Sie hier eine Bildbeschreibung ein

tps

Fügen Sie hier eine Bildbeschreibung ein

Wie kann ich JTL-Dateien anzeigen?
JTL kann in jedem Listener geöffnet werden, z. B. zum Anzeigen des Ergebnisbaums, des Gesamtberichts, der TPS und der Antwortzeit.
Klicken Sie beim Öffnen in einem aggregierten Bericht auf Durchsuchen
Fügen Sie hier eine Bildbeschreibung ein

Fügen Sie hier eine Bildbeschreibung ein
Wie TPS, Reaktionszeit
Schauen wir uns zunächst TPS an
TPS hinzufügen
Klicken Sie zum Durchsuchen

Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein

Fügen Sie hier eine Bildbeschreibung ein

ReaktionszeitFügen Sie hier eine Bildbeschreibung ein

Fügen Sie hier eine Bildbeschreibung ein

2. Verteilt

Manchmal kann eine einzelne Presse das Ziel nicht erreichen und es ist eine verteilte Presse erforderlich.
Schließlich sind die Ressourcen einer einzelnen Maschine begrenzt und es ist schwierig, eine große Parallelität zu unterstützen. Auch bei Einzelmaschinenpressen gibt es Engpässe.

2.1 Vertriebsprinzip

Offizielle Website:https://jmeter.apache.org/usermanual/jmeter_distributed_testing_step_by_step.html

Als Steuerungsmaschine dient eine Servermaschine
Die restlichen Maschinen werden als Lademaschinen eingesetzt
Der vom Ziel angeforderte Dienst
Die Steuerung steuert den Start und Stopp der Lademaschine aus der Ferne durch Senden von Signalen und sammelt gleichzeitig Daten und Zusammenfassungen der Lademaschine
Die Lastmaschine startet hauptsächlich Threads, um auf den Server zuzugreifen und den Server im Stresstest anzuvisieren.
Im Allgemeinen startet der Worker die Jmeter-Server-Steuerungsmaschine, um die Lademaschine fernzusteuern. Die Lademaschine startet den Thread und fordert das Ziel auf, die Daten abzurufen, und sendet sie dann an die Steuerungsmaschine zurück.

Wo werden die Skripte bei der Verteilung abgelegt?
Ein Controller, mehrere Mitarbeiter
Bei der Ausführung ohne GUI wird das Skript an den Server übertragen. Wohin soll das Skript nun übertragen werden?
Das Skript wird an den Controller übertragen, d. h. an jeden Worker, der mit der Ausführung des Skripts beginnt zur Zusammenfassung an die Steuermaschine gesendet.

2.2 Vorsichtsmaßnahmen für die verteilte Druckprüfung

(https://img-blog.csdnimg.cn/e3de7b8b65a1447db3bc3618876f62d3.png)
Die Firewall muss geschlossen sein. Wenn die Firewall nicht geschlossen ist, muss der Port geöffnet werden.
Alle Clients müssen sich im selben Subnetz befinden.
Stellen Sie sicher, dass Jmeter auf den Server zugreifen kann
Stellen Sie sicher, dass die Jmeter- und Java-Versionen identisch sind
SSL deaktivieren

2.3 Vorbereitung der Umgebung

Erfordert 3 virtuelle Maschinen
Verwenden Sie 181 als Controller (Maschine steuern)
Verwenden Sie 182.183 als Arbeiter (Maschine laden)
Gleichzeitig müssen diese drei virtuellen Maschinen JDK und JMETER installieren.
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
JDK-Version anzeigen
Fügen Sie hier eine Bildbeschreibung ein
Installieren Sie Jmeter auf drei virtuellen Maschinen
Der Jmeter der lokalen Maschine wird in das Verzeichnis usr/local der virtuellen Maschine übertragen.
Überprüfen Sie nach dem Hochladen die Jmeter-Version
Fügen Sie hier eine Bildbeschreibung ein

2.4 Verteilte Konfiguration

①Arbeiter

182、182
Sichern Sie zunächst die Konfigurationsdatei jmeter.properties
Fügen Sie hier eine Bildbeschreibung ein

server_port kann geändert oder nicht geändert werden. Der Standardwert ist 1099.
Fügen Sie hier eine Bildbeschreibung ein

SSL deaktivieren
server.rmi.ssl.disable=false, ändern Sie false in true
Fügen Sie hier eine Bildbeschreibung ein

Starten Sie jemter
./jmeter-server
Fügen Sie hier eine Bildbeschreibung ein
Überprüfen Sie Port 182, um festzustellen, ob er sich im Überwachungsstatus befindet

Fügen Sie hier eine Bildbeschreibung ein

verifizieren
Stellen Sie eine Telnet-Verbindung zwischen der Steuerungsmaschine und der Lademaschine her, um festzustellen, ob auf den Port zugegriffen werden kann.
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein

②Controller

Bevor Sie die Steuerungsmaschine konfigurieren, debuggen Sie Jmeter im Fenster.
win: zum Debuggen
Sichern Sie zunächst die Konfigurationsdatei jmeter.properties
Fügen Sie hier eine Bildbeschreibung ein
Standardmäßig wird diese Maschine als Lademaschine verwendet.
Die aktuelle Lademaschine ist eine Remote-Lademaschine. Ändern Sie remote_hosts=127.0.0.1 in remote_hosts=192.168.117.182:1099
Hier müssen die IP und der Port der Remote-Load-Maschine angegeben werden. Wenn mehrere mehrere sind, trennen Sie sie durch Kommas.
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
SSL deaktivieren
Ändern Sie server.rmi.ssl.disable=false in server.rmi.ssl.disable=true
Fügen Sie hier eine Bildbeschreibung ein

Debuggen Sie es zunächst über diesen Computer
Starten Sie jmeter neu und lesen Sie die Konfigurationsdatei erneut
Fügen Sie hier eine Bildbeschreibung ein
Gehen Sie nach dem Debuggen unter Windows zur Konfiguration zu Linux.

Konfigurieren Sie auf 181
Sichern Sie zunächst die Konfigurationsdatei jmeter.properties

Fügen Sie hier eine Bildbeschreibung ein

Die aktuelle Lademaschine ist eine Remote-Lademaschine, die dies tutremote_hosts=127.0.0.1Ändernremote_hosts=192.168.117.182:1099
Hier müssen die IP und der Port der Remote-Load-Maschine angegeben werden. Wenn mehrere mehrere sind, trennen Sie sie durch Kommas.

Fügen Sie hier eine Bildbeschreibung ein

Fügen Sie hier eine Bildbeschreibung ein

server.rmi.ssl.disable=false
Willeserver.rmi.ssl.disable=falseÄndernserver.rmi.ssl.disable=true
Fügen Sie hier eine Bildbeschreibung ein
Wenn das Skript an die Steuermaschine übertragen wird, wird das Skript automatisch an jede Lademaschine verteilt.
Separate Anmeldung für ein einzelnes Testszenario
Fügen Sie hier eine Bildbeschreibung ein
Führen Sie das Skript nach dem Hochladen aus
Durch Fernladen ausführen

/usr/local/apache-jmeter-5.1.1/bin/jmeter -n -r -t test.jmx
  • 1

Fügen Sie hier eine Bildbeschreibung ein

Jede Arbeitslastmaschine (Presse) hat 5 Threads und die Gesamtsteuerungsmaschine hat 10 Threads.
Fügen Sie hier eine Bildbeschreibung ein

Umweltvorbereitung
Zwei virtuelle Maschinen. Es gibt einen Master und zwei Slaves. Die Windows-Maschine fungiert als ein Master und der Slave verwendet eine virtuelle Maschine.
Quelle: https://jmeter.apache.org/usermanual/jmeter_distributed_testing_step_by_step.html

Auftauchende Probleme:
java.rmi.RemoteException: Kann nicht gestartet werden. localhost.localdomain ist eine Loopback-Adresse

Erstelltes Remote-Objekt: UnicastServerRef2 [liveRef: [endpoint:127.0.0.1:43474,objID:[-5a8dd143:17e2852fe88:-7fff, 3673082414768940798]]]
Server konnte nicht gestartet werden: java.rmi.RemoteException: Kann nicht gestartet werden. localhost.localdomain ist eine Loopback-Adresse.
Ein Fehler ist aufgetreten: Kann nicht gestartet werden. localhost.localdomain ist eine Loopback-Adresse.
Fügen Sie hier eine Bildbeschreibung ein
Ausnahmeinformationen: Ausnahme beim Serverstart: Java-Remote-Methodenaufruf löste Ausnahme aus: Der Dienst konnte nicht gestartet werden. localhost.localdomain ist eine lokale Loopback-Adresse

Der über den Befehl hostname erhaltene Hostname lautet localhost.
Überprüfen Sie die Hostkonfiguration mit dem Befehl cat /etc/hosts, der auf 127.0.0.1 verweist
Fügen Sie hier eine Bildbeschreibung ein
Lösung:
Geben Sie die IP-Adresse des Remote-Server-Hosts an (rmi.server.hostname).
Beginnen Sie mit der Angabe des Terminalbefehls
./jmeter-server -Djava.rmi.server.hostname=192.168.2.2
Fügen Sie hier eine Bildbeschreibung einFügen Sie hier eine Bildbeschreibung ein