JMeter ist ein Testtool, das ein Websystem im Allgemeinen ständig mit Zugriff belastet. Es ist schwierig, die Zugriffslast mit normalen Funktionen zu erhöhen oder zu verringern, aber ich werde sie einführen, da sie durch Einbau einer externen Bibliothek (Throughput Shaping Timer) grafisch und einfach realisiert werden kann.
Ich denke, die folgenden Beispiele gelten als Fälle, die bei der tatsächlichen Durchführung von Belastungstests verwendet werden können.
Ich werde erklären, wie stark die Zugriffslast gesteuert werden kann, einschließlich der tatsächlichen Einstellungen.
Umweltinformationen
Apache httpd server
Diesmal ist es ein einfacher Test, daher werde ich ihn schnell mit Docker erstellen. Wenn Sie ein zu testendes System haben, müssen Sie es nicht erstellen. Ob es sich um Nginx handelt oder um den Aufbau einer lokalen Umgebung, alles ist in Ordnung!
$ docker pull httpd
$ docker run -dit --name my-apache-app -p 8080:80 -v "$PWD":/usr/local/apache2/htdocs/ httpd:2.4
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e2dc7c3714ee httpd:2.4 "httpd-foreground" 21 minutes ago Up 21 minutes 0.0.0.0:8080->80/tcp, 0.0.0.0:32768->8080/tcp my-apache-app
$ docker exec -it e2dc7c3714ee /bin/bash
$ echo "hello" > ./htdocs/index.html
Hier wird die schockierende Tatsache entdeckt, dass das Dokumentenstammverzeichnis von Apache das Home-Verzeichnis von Mac ist. .. ..
URL http://localhost:8080/index.html
Java
Zum Ausführen von JMeter ist Java 8 oder höher erforderlich. Ich werde weglassen, wie Java installiert wird. [Selbst Anfänger können leicht verstehen] Wie man JDK für Mac installiert
$ java -version java version "1.8.0_202" Java(TM) SE Runtime Environment (build 1.8.0_202-b08) Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)
JMeter
Laden Sie JMeter herunter und extrahieren Sie es in ein beliebiges Verzeichnis Download-Seite
Laden Sie ThroughputShapingTimer herunter Download-Seite
<Das Verzeichnis, in dem JMeter erweitert wird> / apache-jmeter-5.3 / lib
$ cd/apache-jmeter-5.3/bin $ sh ./jmeter.sh
Herr A "Dieses System hat normalerweise 100 tps Zugriff, also werde ich es mit einer Last von 10 Minuten von JMeter testen!" Boss "Normalerweise ist das schon alles, aber was ist, wenn das Summen auf Twitter den Zugriff vorübergehend um das Fünffache erhöht?" Mr. A "Hmm ... ich weiß nicht ... (Nanyaro ...)"
Der spektakuläre Leistungstest von Mr. A und J Meter beginnt hier!
Die Grundoperation von JMeter entfällt.
Fügen Sie eine Thread-Gruppe hinzu Da die Ausführungszeit von ThroughputShapingTimer gesteuert wird, setzen Sie die Anzahl der Schleifen auf unendlich.
Fügen Sie den HTTP-Anforderungs-Sampler hinzu
--Protokoll: http
localhost
8080
--Path: / index.html
Fügen Sie einen statistischen Bericht hinzu
--Dateiname: Geben Sie ein beliebiges Speicherziel an
Fügen Sie den Throughput Shaping Timer hinzu
Stellen Sie die Lastmenge ein
Funktionsweise:
--Klicken Sie auf "Zeile hinzufügen", um eine Einstellungszeile hinzuzufügen. * Die Zeilen sind in chronologischer Reihenfolge
--Stellen Sie den Ladebetrag zu Beginn auf Start RPS
* RPS = RequestPerSecond
--Stellen Sie die Lastmenge am Ende auf "RPS beenden"
--Stellen Sie die Dauer auf "Dauer, Sek." Ein
Wenn diese Option festgelegt ist, wird am unteren Bildschirmrand in Echtzeit ein Diagramm gezeichnet. Probieren Sie es also aus!
Führen Sie eine Thread-Gruppe aus
Die Anzahl der Zugriffe ist fast wie geplant.
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e2dc7c3714ee httpd:2.4 "httpd-foreground" 7 hours ago Up 36 minutes 0.0.0.0:8080->80/tcp, 0.0.0.0:32771->8080/tcp my-apache-app
$ docker logs e2dc7c3714ee | grep test01 | awk '{print $4}' | sed 's/\[12\/Oct\///g' | uniq -c 1 2020:14:38:12 1 2020:14:39:09 3 2020:14:39:10 4 2020:14:39:11 6 2020:14:39:12 8 2020:14:39:13 11 2020:14:39:14 10 2020:14:39:15 9 2020:14:39:16 11 2020:14:39:17 10 2020:14:39:18 9 2020:14:39:19 11 2020:14:39:20 10 2020:14:39:21 9 2020:14:39:22 11 2020:14:39:23 10 2020:14:39:24 10 2020:14:39:25 10 2020:14:39:26 9 2020:14:39:27 11 2020:14:39:28 10 2020:14:39:29 10 2020:14:39:30 10 2020:14:39:31 10 2020:14:39:32 9 2020:14:39:33 11 2020:14:39:34 17 2020:14:39:35 26 2020:14:39:36 34 2020:14:39:37 42 2020:14:39:38 51 2020:14:39:39 41 2020:14:39:40 35 2020:14:39:41 26 2020:14:39:42 17 2020:14:39:43 10 2020:14:39:44 10 2020:14:39:45 10 2020:14:39:46 10 2020:14:39:47 10 2020:14:39:48 10 2020:14:39:49 9 2020:14:39:50 11 2020:14:39:51 10 2020:14:39:52 10 2020:14:39:53 10 2020:14:39:54 9 2020:14:39:55 10 2020:14:39:56 11 2020:14:39:57 10 2020:14:39:58 10 2020:14:39:59 10 2020:14:40:00 9 2020:14:40:01 11 2020:14:40:02 10 2020:14:40:03 10 2020:14:40:04
Das erste Element ist die Zugriffsmenge pro Sekunde und das zweite Element ist die Zeit. Sie können sehen, dass die Last vorübergehend auf 50 RPS gestiegen ist, indem Sie ungefähr 10 RPS beibehalten.
Herr A, dem es gelungen ist, die Zugriffslast mit JMeter frei zu manipulieren Herr A "Erhöhter Zugriff unter der Annahme eines Buzz auf Twitter, es scheint, dass Sie mit JMeter testen können!" Boss: "Mir wurden die Ergebnisse angezeigt, aber ich kann nur auf einer einzelnen Seite testen. Ich möchte, dass Sie testen, ob der Benutzer von der obersten Seite zur beliebten Seite wechselt." Herr A, der schwebte, aber der eigentliche Kampf stand noch bevor ** Nächstes Mal: "Ich habe vor nichts mehr Angst" **
Es war eine kurze Erklärung, aber ich hoffe, Sie haben die Möglichkeit von ThroughputShapingTime gespürt. Es ist jedoch sehr unwahrscheinlich, dass Sie nur in einem Webanwendungstest auf die Beispielseiten zugreifen. Dieses Mal werde ich nur die einfache Verwendung vorstellen und im nächsten Artikel die praktische Verwendung erläutern.
ThrouputShapingTimer DockerHub Apache httpd
Recommended Posts