Notes de test de stress Jmeter (3) - débogage / signature / cookies script / amélioration du débit / réduction du taux d'anomalies / amélioration des performances simultanées sur une seule machine

import XXXsign.Openapi2sign; --- Importer la méthode de signature dans le package jar 
String str1 = "12121"; --- champs qui doivent être signés; apprendre du développement quels champs sont obligatoires 
String result = ""; 
-définir le résultat variable result = new Openapi2sign (). md5Encode (str1); --- appeler la méthode de signature pour signer le champ de signature 
System.out.println (result); --- sortir le champ signé 
vars.put ("sign", result. toString ()); ---- Définissez la valeur du signe de parcours global sur la valeur après la signature. Le résultat de la signature doit être exécuté

  

  Après avoir écrit le script de base et les paramètres de requête, démarrez le script de débogage: le premier problème a été rencontré:

  Échec de la vérification de la signature de la demande:

  Trouver des informations sur divers sites en ligne: enfin compris: les étapes sont les suivantes:

    1. Apprenez les règles et algorithmes de signature frontale du développeur et obtenez le package XXXsign.jar de signature frontale.

    2. Ajoutez le package au répertoire Jmeter / lib.

    3. Étant donné que la signature générée par chaque requête HTTP est différente, vous devez ajouter un préprocesseur à chaque requête HTTP qui nécessite un échantillonneur BeanShell de signature et un débogueur d'échantillonnage (pour le débogage, supprimez lors de l'exécution officielle du script ).

    4. Écrivez un script, générez une signature et définissez la variable de signature, appelez-la dans l'élément de configuration d'en-tête de requête http

import XXXsign.Openapi2sign; --- Importer la méthode de signature dans le package jar 
String str1 = "12121"; --- champs qui doivent être signés; apprendre du développement quels champs sont nécessaires 
String token = "" ---- définition de signature token
String time = $ {__ time (/ 1000)} ---- Paramètre de temps requis pour la signature
String str00 = token + time + str1 --- épissé dans le champ de signature final String result = ""; --define result variable variable result = new Openapi2sign (). md5Encode (str00); --- appeler la méthode de signature pour signer le champ de signature System.out.println (result); --- sortir le champ signé, lorsqu'il est officiellement exécuté, commenter cette ligne vars. put ("sign", result.toString ()); ---- Définissez la valeur du signe de parcours global sur la valeur après la signature. Le résultat de la signature doit être exécuté

 

  

 

 

 5. Le script débogué, vous pouvez voir la chaîne de signature de la demande dans les résultats de l'échantillonneur de débogage et l'en-tête de la demande

 

 

 

 

 

=================================================

 

  Après le débogage de la signature: a rencontré le deuxième échec de vérification des cookies.

    Il n'est pas approprié d'utiliser l'interface de connexion pour obtenir l'état de connexion lorsqu'un grand nombre d'utilisateurs doivent effectuer des tests commerciaux simultanés. Mettre à jour le cookie à nouveau

  La méthode que j'utilise est de trouver les règles de génération du cookie de cookie de développement corrigées. Bon pour les tests d'interface.

  Les règles de fixation des cookies sont les suivantes:

    sid = ID utilisateur + 'sid', uid = ID utilisateur, device_id = test (corrigé pour tester)

  Trouvez le DBA pour écrire la règle dans Redis.

  Ajoutez un gestionnaire de cookies au groupe de threads Jmeter:

  Dans le gestionnaire de cookies: définissez un format de cookie fixe. L'ID utilisateur est transféré à partir du fichier de données csv. Utilisé pour simuler des scénarios d'entreprise de demande multi-utilisateurs.

  

 

 

 

  Après le test: ok

 

================================================== ====

  Augmentez le débit:

  Le débogage de script est effectué sur Windows 10. Au cours du test, il a été constaté que le débit est toujours en hausse, et le taux anormal est particulièrement élevé de 55%

  Recherche sur Internet pendant un certain temps ~ Je me sens comme un toolman. Haha ~

  

  Tout d'abord, selon la mémoire de mon ordinateur, j'ai augmenté la mémoire jvm et l'ai ajoutée directement à la 4G en un seul souffle, heureux ~

  Et configuré comme suit:

   Modifiez le registre: augmentez le port de connexion TCP et réduisez le temps de récupération TCP:

    Windows fournit 1 024 à 5 000 ports pour les liaisons TCP / IP et il faut quatre minutes pour les recycler. Cela nous a amenés à remplir le port lors de l'exécution d'un grand nombre de demandes dans un court laps de temps.

La solution est la suivante:

Dans cmd, utilisez la commande regedit pour ouvrir le registre

Étape 1: augmentez la limite supérieure du port temporaire alloué dynamiquement à la connexion socket TCP / IP du client.

在 HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters 下 :

Cliquez avec le bouton droit sur les paramètres et ajoutez un nouveau DWORD avec le nom MaxUserPort

Ensuite, double-cliquez sur MaxUserPort, entrez les données numériques sous la forme 65534, sélectionnez décimal pour la base

Étape 2: réduire le délai d'expiration de la connexion socket TCP / IP du client (la valeur par défaut est 240 secondes)

Dans le Registre, recherchez et cliquez sur la clé de Registre suivante.

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters

Dans le menu Edition, cliquez sur Nouveau, valeur DWORD, puis ajoutez la valeur de Registre suivante pour réduire la durée pendant laquelle la connexion est dans l'état TIME_WAIT lorsque la connexion est fermée. Lorsque la connexion est dans l'état TIME_WAIT, la paire de sockets ne peut pas être réutilisée:

Faites un clic droit sur les paramètres et ajoutez un nouveau DWORD avec le nom TcpTimedWaitDelay

Ensuite, double-cliquez sur TcpTimedWaitDelay, entrez les données numériques sous la forme d'un nombre compris entre 30 et 240, sélectionnez le jeu de nombres décimaux 30 secondes

Redémarrez l'ordinateur

Après avoir terminé les étapes ci-dessus, le débit a considérablement augmenté et le taux anormal a été considérablement réduit.

 

====================================

Améliorez les performances simultanées autonomes

  Après avoir amélioré le nombre de connexions mémoire et TCP et modifié le temps de connexion TCP. Les performances de la machine ont été presque réduites par nous. Maintenant, nous voulons déboguer notre script.

   1. Nombre de threads: chaque nombre de threads occupe une certaine quantité de mémoire (je teste 3 à 4M moi-même: devinez), le nombre de threads ne doit pas dépasser la mémoire jvm donnée, sinon il restera bloqué et lent. Le débit a diminué et le taux anormal a augmenté. La simultanéité diminue, le nombre de connexions diminue, etc.

   2. Temps de préchauffage: je le règle généralement sur 30 secondes. Lorsque le paramètre de thread réel est relativement grand, s'il est supérieur à 500, 30 secondes ne démarreront pas complètement. Il est recommandé de le régler en fonction du temps de 500 threads et 30 secondes.

   3. Répondez, affirmez, affichez l'arbre des résultats, ces choses sont désactivées.

   4. Minuterie de débit précis: Ceci est utile dans certains scénarios lorsque le nombre de demandes d'interface doit être limité.

   

 

 

 

 

 

 

 

 

 

 

Je suppose que tu aimes

Origine www.cnblogs.com/Yanqiqi/p/12672540.html
conseillé
Classement