Partage de technologie

jmeter distribué (4)

2024-07-12

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

1. interface graphique

L'interface graphique de jmeter est principalement utilisée pour déboguer les scripts

1. Créez d’abord le script à l’aide de l’interface graphique

Créez d'abord un script
Démo : Comment scénariser une scène mixte ?
Utilisez un ratio commercial de 211

①Démarrez le service de base de données

Services de base de données : y compris MySQL, Redis
port mysql par défaut 3306

netstat -lntp | grep 3306
  • 1

En état d'écoute, 6379 est le port par défaut de Redis

netstat -lntp | grep 6379
  • 1

Port de service du projet 18089

netstat -lntp | grep 18089
  • 1

②Accéder à l'interface d'accès aux documents

211 peut être converti en deux services de tests de résistance

L'une consiste à s'inscrire, l'autre à s'inscrire et à se connecter pour ajouter des produits.
Les deux sont à 50 %

③Ajouter un groupe de discussions

jmeter—ajouter un groupe de threads-ajouter-un groupe de threads-utilisateur-thread

Convertir deux services de tests de résistance

④Ajouter un contrôleur de débit

jmeter - contrôleur de logique supplémentaire - contrôleur de débit

Convertissez deux services de tests de résistance.
La première activité de test de résistance comprend l'inscription, la connexion et l'ajout de produits
La deuxième activité des tests de résistance est l'enregistrement

Insérer la description de l'image ici

50% chacun
Insérer la description de l'image ici

⑤Ajouter une requête http d'échantillonneur

jmeter-add-sampler-http-requête
Convertir deux services de tests de résistance
Insérer la description de l'image ici

La première activité de test de résistance comprend l'inscription, la connexion et l'ajout de produits

Insérer la description de l'image ici

Insérer la description de l'image ici

La deuxième affaire est l'enregistrement

Écrivez selon le swagger d'enregistrement, entrez les paramètres
Insérer la description de l'image ici
Généralement, vous n’avez pas besoin de renseigner l’identifiant lors de son insertion.
Addtime n'a pas non plus besoin d'être renseigné
Copiez et collez les données des paramètres dans jmeter
Insérer la description de l'image ici

chemin basé sur l'URL
Insérer la description de l'image ici

Insérer la description de l'image ici

Insérer la description de l'image ici

⑥Ajouter un gestionnaire d'en-tête http,

Ils passent tous json
Insérer la description de l'image ici

Insérer la description de l'image ici

⑦Ajouter la valeur par défaut de la requête http

Renseignez l'ip et le port selon le document d'interface
Insérer la description de l'image ici
Insérer la description de l'image ici

⑧Ajoutez un écouteur et affichez l'arborescence des résultats

Insérer la description de l'image ici

⑨Ajouter une assertion

Il est préférable d'ajouter des affirmations

Insérer la description de l'image iciInsérer la description de l'image ici

2. Non graphique

-nExécuter jmeter en mode non-gui
-t exécute l'emplacement du fichier de test Spécifie le script pour exécuter jmeter Il ne se trouve pas dans le chemin actuel.
-l spécifie le fichier de résultat généré, qui est un fichier jtl
-e Une fois le test terminé, générez un rapport de test
-o spécifie l'emplacement de stockage du rapport de test html
-r démarrage à distance

1. Presse à machine unique

①Candidature à la presse

Installer jdk et jmeter sur Linux Press
Installer sous usr/local
Téléchargez directement jmeter sur la fenêtre de la presse Linux, car les plug-ins impliqués dans le script de débogage sont également disponibles.
Insérer la description de l'image ici

②Télécharger le script dans la presse

Remarque : Si le script implique un fichier de paramètres csv, vous devez télécharger le fichier de paramètres csv dans le répertoire bin de jmeter sous Linux.
Les rapports d'agrégation et les écouteurs doivent être désactivés avant le téléchargement

5 fils, ajoutez-en un toutes les 30 secondes, soit 150

La durée doit être supérieure au temps d'appel de 150. S'il dure encore 50 secondes, réglez-le sur 200.
Insérer la description de l'image ici

Une fois le téléchargement de jmeter réussi, vérifiez la version de jmeter et si elle est disponible.

Insérer la description de l'image ici

③Initialisation

Il y a deux endroits
Tout d’abord, le chemin de stockage du script de test doit créer un répertoire pour stocker le rapport HTML.

Insérer la description de l'image ici
Avant d'exécuter le script, le répertoire res doit être vide
Deuxièmement, nettoyez les données de la table de la base de données sans tenir compte des données existantes.
Insérer la description de l'image ici

④Exécuter le script

Insérer la description de l'image ici

⑤Afficher les résultats

résultat
548 requêtes complétées en 13 secondes

Insérer la description de l'image ici
Insérer la description de l'image ici

Ouvrir le rapport global
Le nombre de requêtes ko ayant échoué

Insérer la description de l'image ici
temps de réponsetemps de réponse
Insérer la description de l'image ici

tps

Insérer la description de l'image ici

Comment afficher les fichiers jtl ?
jtl peut être ouvert dans n'importe quel écouteur, comme l'affichage de l'arborescence des résultats, du rapport agrégé, du tps, du temps de réponse.
Si ouvert dans un rapport global, cliquez sur Parcourir
Insérer la description de l'image ici

Insérer la description de l'image ici
Tels que tps, temps de réponse
Regardons d'abord les tps
Ajouter des tps
Cliquez pour parcourir

Insérer la description de l'image ici
Insérer la description de l'image ici
Insérer la description de l'image ici

Insérer la description de l'image ici

Temps de réponseInsérer la description de l'image ici

Insérer la description de l'image ici

2. Distribué

Parfois, une seule presse ne peut pas atteindre l’objectif et une presse distribuée est nécessaire.
Après tout, les ressources d'une seule machine sont limitées et il est difficile de prendre en charge une grande concurrence. Les presses à une seule machine présentent également des goulots d'étranglement.

2.1 Principe de répartition

Site officiel:https://jmeter.apache.org/usermanual/test_distribue_jmeter_pas_a_pas.html

Une machine serveur sert de machine de contrôle
Le reste des machines est utilisé comme machine de chargement
Le service demandé par la cible
Le contrôleur contrôle à distance le démarrage et l'arrêt de la machine de chargement en envoyant des signaux, et collecte en même temps les données et le résumé de la machine de chargement.
La machine de chargement démarre principalement les threads pour accéder au serveur et cibler le serveur soumis au test de résistance.
Généralement, le travailleur démarre la machine de contrôle du serveur jmeter pour contrôler à distance la machine de chargement. La machine de chargement démarre le thread et demande à la cible d'obtenir les données, puis les renvoie à la machine de contrôle.

Où sont placés les scripts une fois distribués ?
Un contrôleur, plusieurs travailleurs
Lors de l'exécution de non-gui, le script est transmis au serveur. Maintenant qu'il est distribué, où doit-il être transmis ?
Le script sera transféré au contrôleur.Pendant l'exécution, le script sera envoyé à chaque machine de chargement, c'est-à-dire qu'une fois que le chargement aura obtenu le script, il commencera à exécuter le script. Après l'exécution, les données seront transmises. à la machine de contrôle pour résumé.

2.2 Précautions pour les tests de pression distribuée

(https://img-blog.csdnimg.cn/e3de7b8b65a1447db3bc3618876f62d3.png)
Le pare-feu doit être fermé. Si le pare-feu n'est pas fermé, le port doit être ouvert.
Tous les clients doivent être sur le même sous-réseau.
Assurez-vous que jmeter peut accéder au serveur
Assurez-vous que les versions de jmeter et java sont les mêmes
désactiver SSL

2.3 Préparation de l'environnement

Nécessite 3 machines virtuelles
Utiliser 181 comme contrôleur (machine de contrôle)
Utiliser 182 183 comme travailleur (charger la machine)
En parallèle, ces trois machines virtuelles doivent installer jdk et jmeter.
Insérer la description de l'image ici
Insérer la description de l'image ici
Insérer la description de l'image ici
Insérer la description de l'image ici
Voir la version jdk
Insérer la description de l'image ici
Installer jmeter sur trois machines virtuelles
Le jmeter de la machine locale est transféré dans le répertoire usr/local de la machine virtuelle.
Vérifiez la version de jmeter après le téléchargement
Insérer la description de l'image ici

2.4 Configuration distribuée

①Travailleur

182、182
Sauvegardez d'abord le fichier de configuration jmeter.properties
Insérer la description de l'image ici

server_port peut être modifié ou non. La valeur par défaut est 1099.
Insérer la description de l'image ici

désactiver SSL
server.rmi.ssl.disable=false, remplacez false par true
Insérer la description de l'image ici

Démarrer le jemter
./jmeter-serveur
Insérer la description de l'image ici
Vérifiez le port 182 pour voir s'il est en état d'écoute

Insérer la description de l'image ici

vérifier
Connectez la machine de contrôle à la machine de chargement pour voir si le port est accessible.
Insérer la description de l'image ici
Insérer la description de l'image ici

②Contrôleur

Avant de configurer la machine de contrôle, déboguez sur jmeter dans la fenêtre.
win : pour le débogage
Sauvegardez d'abord le fichier de configuration jmeter.properties
Insérer la description de l'image ici
Par défaut, cette machine est utilisée comme machine de chargement.
La machine de chargement actuelle est une machine de chargement distante, remplacez Remote_hosts=127.0.0.1 par Remote_hosts=192.168.117.182:1099.
L'adresse IP et le port de la machine de chargement distant doivent être écrits ici. Si plusieurs sont multiples, séparez-les par des virgules.
Insérer la description de l'image ici
Insérer la description de l'image ici
désactiver SSL
Remplacez server.rmi.ssl.disable=false par server.rmi.ssl.disable=true
Insérer la description de l'image ici

Déboguez-le d’abord via cette machine
Redémarrez jmeter et relisez le fichier de configuration
Insérer la description de l'image ici
Après le débogage sur Windows, accédez à Linux pour la configuration.

Configurer sur 181
Sauvegardez d'abord le fichier de configuration jmeter.properties

Insérer la description de l'image ici

La machine de chargement actuelle est une machine de chargement à distance, quiremote_hosts=127.0.0.1Changer pourremote_hosts=192.168.117.182:1099
L'adresse IP et le port de la machine de chargement distant doivent être écrits ici. Si plusieurs sont multiples, séparez-les par des virgules.

Insérer la description de l'image ici

Insérer la description de l'image ici

serveur.rmi.ssl.disable=false
Volontéserver.rmi.ssl.disable=falseChanger pourserver.rmi.ssl.disable=true
Insérer la description de l'image ici
Lorsque le script est transmis à la machine de contrôle, le script sera automatiquement distribué à chaque machine de chargement.
Connexion à un seul scénario de test séparé
Insérer la description de l'image ici
Après avoir téléchargé le script, exécutez le script
Exécuter via le chargement à distance

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

Insérer la description de l'image ici

Chaque machine de charge de travail (presse) dispose de 5 threads et la machine de contrôle total dispose de 10 threads.
Insérer la description de l'image ici

Préparation environnementale
Deux machines virtuelles. Il y a un maître et deux esclaves. La machine Windows fait office de maître et l'esclave utilise une machine virtuelle.
Référence : https://jmeter.apache.org/usermanual/jmeter_distributed_testing_step_by_step.html

Problèmes qui surviennent :
java.rmi.RemoteException : impossible de démarrer. localhost.localdomain est une adresse de bouclage

Objet distant créé : UnicastServerRef2 [liveRef : [endpoint :127.0.0.1:43474,objID:[-5a8dd143:17e2852fe88:-7fff, 3673082414768940798]]]
Le serveur n'a pas pu démarrer : java.rmi.RemoteException : impossible de démarrer. localhost.localdomain est une adresse de bouclage.
Une erreur s'est produite : impossible de démarrer. localhost.localdomain est une adresse de bouclage.
Insérer la description de l'image ici
Informations sur l'exception : Exception de démarrage du serveur : l'appel de méthode distante Java a généré une exception : Impossible de démarrer le service. localhost.localdomain est une adresse de bouclage locale

Le nom d'hôte obtenu via la commande hostname est localhost.
Vérifiez la configuration des hôtes via la commande cat /etc/hosts localhost localhost.localdomain localhost4... pointe vers 127.0.0.1.
Insérer la description de l'image ici
Solution:
Spécifiez l'adresse IP de l'hôte du serveur distant (rmi.server.hostname)
Commencez par spécifier la commande du terminal
./jmeter-server -Djava.rmi.server.hostname=192.168.2.2
Insérer la description de l'image iciInsérer la description de l'image ici