Question

Nous avons simple flux de test de performance dans une application.

  1. Nous connectons
  2. Recherche basée sur des critères
  3. recherches répétées pour différents paramètres.

Nous utilisons Jmeter pour faire des tests de performance. Nous avons besoin d'avoir plusieurs threads en cours d'exécution pour tester cette manière évolutive.

La façon dont nous avons cette arrangé est:

-Test Plan
  - Thread Group
      - Cookie Manager
      - Login To application
      - Search on param 1
      - Search on param 2
  - results summary table
  - Summary report

Donc, fondamentalement, nous avons tableau récapitulatif de retour et présent rapport au niveau du plan de tout gestionnaire de cookies est présent au niveau du groupe de fil.

Quand je lance pour un fil, il fonctionne très bien et se termine bien. Quand je l'échelle à plusieurs threads, dès que le thread suivant démarre, la session pour le dernier fil est invalidée. Cela provoque des défaillances de tous les fils déjà en cours d'exécution en raison de nouveau thread donné naissance.

je suis arrivé à ce résultat avec l'observation:
1. Si je lance plusieurs threads, seul dernier fil a obtenu des réponses valides en arbre résultat sommaire
2. Si je cours avec 2 fils avec montée en puissance période de 10 secondes, ce qui signifie que chaque thread obtient le temps de se terminer, puis les deux exécuter avec succès.

Selon ma compréhension de chaque connexion de fil d'en application et depuis gestionnaire de cookies est au niveau du fil, les valeurs seront maintenues pour id de session pour chaque fil respectivement? Mais ce qui cause le remplacement de l'identifiant de session entre les discussions?

Toute aide sera très appréciée.

Était-ce utile?

La solution

Copié de documentation jmeter:

  

Le dernier élément est un cookie HTTP   Manager. Un Cookie Manager devrait être   ajouté à tous les tests Web - autrement   JMeter ignorera les cookies. En ajoutant   ce soit au niveau du groupe de discussion, nous   faire en sorte que toutes les requêtes HTTP   partager les mêmes cookies.

À partir du chapitre "4.2.2 Contrôleurs logiques" dans http://jmeter.apache.org/ manuel d'utilisateur / test_plan.html .

EDIT : Je suppose que vous devez utiliser http: // jmeter.apache.org/usermanual/component_reference.html#Simple_Controller pour regrouper vos demandes avec Cookie Manager.

Autres conseils

Je pense que la réponse de Andrey ne peut pas aider. Il cite que chaque demande utilisera les mêmes cookies, mais selon le manuel JMeter:

  

Chaque thread JMeter a sa propre "zone de stockage des cookies".

Pour autant que je comprends la question, vous voulez que chaque fil pour partager le même cookie d'ID de session. Donc, il me semble que vous devez avoir deux groupes de discussion et les exécuter consécutivement. Le premier groupe de fil (avec un seul thread qui exécute une seule fois) doit se connecter et enregistrer la valeur du cookie de session à un paramètre global (peut-être vous avez besoin d'utiliser les capacités de script de JMeter). Définissez ensuite ce cookie dans le gestionnaire de cookies du second groupe de threads.

L'espoir qui aide.

Essayez d'augmenter la montée en puissance du temps. Je suis tombé sur le même problème où la montée en puissance du temps était d'environ 1 seconde, puis j'augmenté à 3 secondes par fil et il a couru très bien.

Essayez ceci:

Ouvrir les user.properties présents dans le dossier bin de JMeter

Modifier et ajoutez la ligne suivante:

CookieManager.check.cookies=false

Enregistrer et exécuter le script. J'espère que cela résoudra votre problème.

changer d'abord votre code:

jmeter.properties
CookieManager.save.cookies=true
CookieManager.name.prefix=mycookie_

Ensuite, ajoutez un gestionnaire de cookies HTTP dans le même groupe de threads que votre sampler java.

Ensuite, dans votre sampler java ajouter:

JMeterVariables jmv = JMeterContextService.getContext().getVariables();
Iterator<Map.Entry<String,Object>> it = jmv.getIterator();
while(it.hasNext()){
    Map.Entry<String,Object> v = it.next();
    System.out.println("name: " + v.getKey() + " value: " + v.getValue());
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top