[JAVA] Stellen Sie die Zugriffslast ein, die mit JMeter grafisch geändert werden kann (Teil 1).

Einführung

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.

Was Sie mit dem Throughput Shaping Timer tun können

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.

Versuchen Sie es mit dem Throughput Shaping Timer

Umweltinformationen

Umweltinformationen

Umgebung

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!

  1. Holen Sie sich das offizielle Bild
$ docker pull httpd
  1. Container starten
$ docker run -dit --name my-apache-app -p 8080:80 -v "$PWD":/usr/local/apache2/htdocs/ httpd:2.4
  1. Bestätigen Sie die Container-ID
$ 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
  1. Containerverbindung
$ docker exec -it e2dc7c3714ee /bin/bash
  1. Erstellen Sie eine Testseite
$ echo "hello" > ./htdocs/index.html

Hier wird die schockierende Tatsache entdeckt, dass das Dokumentenstammverzeichnis von Apache das Home-Verzeichnis von Mac ist. .. ..

  1. Überprüfen Sie die Verbindung mit dem Browser URL http://localhost:8080/index.html
    スクリーンショット 2020-10-12 17.06.51.png

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

  1. Laden Sie JMeter herunter und extrahieren Sie es in ein beliebiges Verzeichnis Download-Seite スクリーンショット 2020-10-12 22.30.25.png

  2. Laden Sie ThroughputShapingTimer herunter Download-Seite

  1. Platzieren Sie ThroughputShapingTimer Extrahieren Sie das heruntergeladene Plug-In (jpgc-tst-2.5.zip) und Platzieren Sie die folgenden drei JAR-Dateien im lib-Verzeichnis von Jmeter. Speicherort: <Das Verzeichnis, in dem JMeter erweitert wird> / apache-jmeter-5.3 / lib
  1. Starten Sie JMeter
 $ cd  /apache-jmeter-5.3/bin
$ sh ./jmeter.sh

Versuchen Sie, die Lastmenge einzustellen (Anfänger)

Situationseinstellungen

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!

Versuchen Sie, Jmeter einzustellen

Die Grundoperation von JMeter entfällt.

  1. Fügen Sie eine Thread-Gruppe hinzu Da die Ausführungszeit von ThroughputShapingTimer gesteuert wird, setzen Sie die Anzahl der Schleifen auf unendlich. スクリーンショット 2020-10-12 23.40.44.png

  2. Fügen Sie den HTTP-Anforderungs-Sampler hinzu --Protokoll: http

  1. Fügen Sie einen statistischen Bericht hinzu --Dateiname: Geben Sie ein beliebiges Speicherziel an スクリーンショット 2020-10-12 23.19.04.png

  2. Fügen Sie den Throughput Shaping Timer hinzu スクリーンショット 2020-10-12 23.20.41.png スクリーンショット 2020-10-12 23.22.32.png

  3. 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 スクリーンショット 2020-10-12 23.25.07.png Wenn diese Option festgelegt ist, wird am unteren Bildschirmrand in Echtzeit ein Diagramm gezeichnet. Probieren Sie es also aus!

  4. Führen Sie eine Thread-Gruppe aus スクリーンショット 2020-10-12 23.36.07.png

Überprüfen Sie das Ausführungsergebnis

Statistischer Bericht

Die Anzahl der Zugriffe ist fast wie geplant. スクリーンショット 2020-10-12 23.43.36.png

Apache-Protokoll

  1. Bestätigen Sie die Container-ID
$ 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
  1. Apache-Protokollanalyse
 $ 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.

Später reden

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" **

schließlich

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.

Referenz

ThrouputShapingTimer DockerHub Apache httpd

Recommended Posts

Stellen Sie die Zugriffslast ein, die mit JMeter grafisch geändert werden kann (Teil 2).
Stellen Sie die Zugriffslast ein, die mit JMeter grafisch geändert werden kann (Teil 1).
Vier Reihen mit Schwerkraft, die auf der Konsole gespielt werden können
[Rails] "Pry-Rails", die beim Speichern mit der create-Methode verwendet werden können
Beschreibung, die es nur für Poster zugänglich macht
Organisieren Sie Methoden, die mit StringUtils verwendet werden können
Über die Sache, dass hidden_field wahnsinnig benutzt werden kann
Lasttest mit JMeter
Lernen Sie Ruby mit AtCoder Anfänger Auswahl [Einige Summen] Erhöhen Sie die Methoden, die verwendet werden können
Erstellen Sie ein Seitensteuerelement, das mit RecyclerView verwendet werden kann
Firebase-Realtime-Datenbank für Android, die mit Kopie verwendet werden kann
SwiftUI-Ansicht, die in Kombination mit anderen Frameworks verwendet werden kann
Zusammenfassung der JDKs, die mit Homebrew installiert werden können (Stand November 2019)