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).
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.
Informations environnementales
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!
$ 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
Ici, on découvre le fait choquant que la racine du document d'apache soit le répertoire personnel de Mac. .. ..
URL http://localhost:8080/index.html
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
Téléchargez JMeter et extrayez-le dans n'importe quel répertoire Page de téléchargement
Télécharger ThroughputShapingTimer Page de téléchargement
<Le répertoire où JMeter est développé> / apache-jmeter-5.3 / lib
$ cd/apache-jmeter-5.3/bin $ sh ./jmeter.sh
jmeter.bat
au même niveau.
C'est tout pour la préparation, la pratique tant attendue!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!
Le fonctionnement de base de JMeter est omis.
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.
Ajouter un échantillonneur de requêtes HTTP
--Protocole: http
localhost
8080
/ index.html
Ajouter un rapport statistique
--Nom du fichier: Spécifiez une destination de sauvegarde arbitraire
Ajouter un minuteur de mise en forme du débit
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 sur
Start RPS * RPS = RequestPerSecond --Définissez la quantité de charge à la fin sur ʻEnd RPS
--Réglez la durée sur Durée, sec
Une fois défini, un graphique sera dessiné en temps réel en bas de l'écran, alors essayons-le!
Exécutez un groupe de threads
Le nombre d'accès est presque comme prévu.
$ 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
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.
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" **
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.
ThrouputShapingTimer DockerHub Apache httpd
Recommended Posts