[JAVA] Définissez la charge d'accès qui peut être modifiée graphiquement avec JMeter (Partie 1)

introduction

JMeter est un outil de test qui met généralement une charge d'accès constante sur un système Web. Il est difficile d'augmenter ou de diminuer la charge d'accès avec les fonctions normales, mais je vais l'introduire car il peut être réalisé graphiquement et facilement en incorporant une bibliothèque externe (Throughput Shaping Timer).

Ce que vous pouvez faire avec le minuteur de mise en forme du débit

Je pense que les exemples suivants s'appliquent comme cas qui peuvent être utilisés lors de la réalisation de tests de charge.

Je vais expliquer dans quelle mesure la charge d'accès peut être contrôlée, y compris les paramètres réels.

Essayez d'utiliser le minuteur de mise en forme du débit

Informations environnementales

Informations environnementales

Environnement

Apache httpd server

Comme il s'agit d'un test simple, nous le construirons rapidement avec Docker. Si vous avez un système à tester, vous n'avez pas besoin de le construire. Que ce soit Nginx ou la création d'un environnement local, tout va bien!

  1. Obtenez l'image officielle
$ docker pull httpd
  1. Démarrer le conteneur
$ docker run -dit --name my-apache-app -p 8080:80 -v "$PWD":/usr/local/apache2/htdocs/ httpd:2.4
  1. Confirmer l'ID du conteneur
$ 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. Connexion au conteneur
$ docker exec -it e2dc7c3714ee /bin/bash
  1. Créer une page de test
$ echo "hello" > ./htdocs/index.html

Ici, on découvre le fait choquant que la racine du document d'apache soit le répertoire personnel de Mac. .. ..

  1. Vérifiez la connexion avec le navigateur URL http://localhost:8080/index.html
    スクリーンショット 2020-10-12 17.06.51.png

Java

Java 8 ou supérieur est requis pour exécuter JMeter. J'omettrai comment installer Java. [Même les débutants peuvent facilement comprendre] Comment installer JDK pour Mac

$ 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. Téléchargez JMeter et extrayez-le dans n'importe quel répertoire Page de téléchargement スクリーンショット 2020-10-12 22.30.25.png

  2. Télécharger ThroughputShapingTimer Page de téléchargement

  1. Placez ThroughputShapingTimer Extrayez le plug-in téléchargé (jpgc-tst-2.5.zip) et Placez les trois fichiers jar suivants inclus dans le répertoire lib de Jmeter. Emplacement: <Le répertoire où JMeter est développé> / apache-jmeter-5.3 / lib
  1. Démarrez JMeter
 $ cd  /apache-jmeter-5.3/bin
$ sh ./jmeter.sh

Essayez de régler la quantité de charge (débutant)

Paramètres de situation

Mr. A "Ce système a généralement un accès à 100tps, donc je vais le tester avec une charge de 10 minutes de JMeter!" Patron "Habituellement, c'est à peu près tout, mais que se passe-t-il si le buzz sur Twitter augmente momentanément le nombre d'accès cinq fois?" M. A "Hmm ... je ne sais pas ... (Nanyaro ...)"

Le test de performance spectaculaire de M. A et J Meter commence ici!

Essayez de régler Jmeter

Le fonctionnement de base de JMeter est omis.

  1. Ajouter un groupe de threads Étant donné que le temps d'exécution est contrôlé par ThroughputShapingTimer, définissez le nombre de boucles sur infini. スクリーンショット 2020-10-12 23.40.44.png

  2. Ajouter un échantillonneur de requêtes HTTP --Protocole: http

  1. Ajouter un rapport statistique --Nom du fichier: Spécifiez une destination de sauvegarde arbitraire スクリーンショット 2020-10-12 23.19.04.png

  2. Ajouter un minuteur de mise en forme du débit スクリーンショット 2020-10-12 23.20.41.png スクリーンショット 2020-10-12 23.22.32.png

  3. Réglez la quantité de charge Mode opératoire: -Cliquez sur ʻAjouter une lignepour ajouter une ligne de réglage * Les lignes seront dans l'ordre chronologique --Définissez la quantité de charge au début surStart RPS * RPS = RequestPerSecond --Définissez la quantité de charge à la fin sur ʻEnd RPS --Réglez la durée sur Durée, sec スクリーンショット 2020-10-12 23.25.07.png Une fois défini, un graphique sera dessiné en temps réel en bas de l'écran, alors essayons-le!

  4. Exécutez un groupe de threads スクリーンショット 2020-10-12 23.36.07.png

Vérifiez le résultat de l'exécution

Rapport statistique

Le nombre d'accès est presque comme prévu. スクリーンショット 2020-10-12 23.43.36.png

Journal Apache

  1. Confirmer l'ID du conteneur
$ 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. Analyse du journal Apache
 $ 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

Le premier élément est la quantité d'accès par seconde et le deuxième élément est le temps. Vous pouvez voir que la charge a temporairement augmenté à 50 RPS en gardant environ 10 RPS.

Parler plus tard

M. A qui a réussi à manipuler librement la charge d'accès avec JMeter Mr. A "Accès accru en supposant un buzz sur Twitter, il semble que vous puissiez tester avec JMeter!" Patron: "On m'a montré les résultats, mais je ne peux tester que sur une seule page. Je voudrais que vous testiez en supposant que l'utilisateur passe de la première page à la page populaire." M. A qui flottait, mais la vraie bataille était encore à venir ** La prochaine fois: "Je n'ai plus peur de rien" **

à la fin

C'était une brève explication, mais j'espère que vous avez ressenti la possibilité de ThroughputShapingTime. Cependant, lors des tests d'applications Web, il est peu probable que vous accédiez uniquement aux exemples de pages. Cette fois, je ne présenterai qu'une utilisation simple, et dans le prochain article, j'expliquerai l'utilisation pratique.

référence

ThrouputShapingTimer DockerHub Apache httpd

Recommended Posts

Définissez la charge d'accès qui peut être modifiée graphiquement avec JMeter (partie 2)
Définissez la charge d'accès qui peut être modifiée graphiquement avec JMeter (Partie 1)
Quatre rangées avec gravité pouvant être jouées sur la console
[Rails] "Pry-rails" qui peuvent être utilisés lors de l'enregistrement avec la méthode create
Description qui le rend accessible uniquement aux affiches
Organiser les méthodes qui peuvent être utilisées avec StringUtils
À propos du problème que hidden_field peut être utilisé de manière insensée
Test de charge avec JMeter
Apprendre Ruby avec la sélection des débutants AtCoder [Quelques sommes] Augmentez les méthodes qui peuvent être utilisées
Créer un contrôle de page qui peut être utilisé avec RecyclerView
Base de données Firebase-Realtime sur Android pouvant être utilisée avec copie
SwiftUI View qui peut être utilisé en combinaison avec d'autres frameworks
Résumé des JDK pouvant être installés avec Homebrew (à partir de novembre 2019)