2016-08-08 3 views
0

Je cours un broyeur pour tester un POST URI avec 10 corps de JSON différents. Les temps de réponse donnés par le moulin ne sont pas corrects. Les tests de corps json individuels donnent un temps de réponse raisonnable bien que le script avec 10 corps json différents donne un temps de réponse très élevé et un très faible tps. J'utilise 1 agent avec 5 processus de travail et 15 threads.Can quelqu'un m'aider à comprendre où le problème pourrait être?Le test d'url multi-broches de Grinder ne fonctionne pas correctement

Le script que je me sers sont: -

`from net.grinder.script.Grinder import grinder 
from net.grinder.script import Test 
from net.grinder.plugin.http import HTTPRequest 
from HTTPClient import NVPair 
from java.io import FileInputStream 
test1 = Test(1, "Request resource") 
request1 = HTTPRequest() 
#response1 = HTTPResponse() 
test1.record(request1) 
log = grinder.logger.info 
class TestRunner: 
    def __call__(self): 
      #request1.setDataFromFile("ReqBody.txt") 
      payload1 = FileInputStream("/home/ubuntu/grinder-3.11/scripts/Req.txt") 
      payload2 = FileInputStream("/home/ubuntu/grinder-3.11/scripts/Req2.txt") 
      payload3 = FileInputStream("/home/ubuntu/grinder-3.11/scripts/Req3.txt") 
      payload4 = FileInputStream("/home/ubuntu/grinder-3.11/scripts/Req4.txt") 
      payload5 = FileInputStream("/home/ubuntu/grinder-3.11/scripts/Req5.txt") 
      payload6 = FileInputStream("/home/ubuntu/grinder-3.11/scripts/Req6.txt") 
      payload7 = FileInputStream("/home/ubuntu/grinder-3.11/scripts/Req7.txt") 
      payload8 = FileInputStream("/home/ubuntu/grinder-3.11/scripts/Req8.txt") 
      payload9 = FileInputStream("/home/ubuntu/grinder-3.11/scripts/Req9.txt") 
      payload10 = FileInputStream("/home/ubuntu/grinder-3.11/scripts/Req10.txt") 

      headersPost = [NVPair('Content-Type', ' application/json')] 
      #request1.setHeaders(headersPost) 
      #request1.setHeaders 
      myload = [payload1, payload2, payload3, payload4, payload5, payload6, payload7, payload8, payload9, payload10] 
      for f in myload: 
       result1 = request1.POST("http://XX.XX.XX.XX:8080/api/USblocks/ORG101/1/N/",f,headersPost) 
       log(result1.toString())` 

Répondre

1

Première étape pour vous est de l'exécuter avec 1 processus fil 1 et 1 agent de. J'espère que ça va fonctionner correctement.

Il semble que puisque la boucle est utilisée, tous les scripts vont s'exécuter pour chaque thread. Je pense que ce que vous voulez/ce qui devrait être fait est que chaque thread devrait envoyer une demande.

Vous pouvez déplacer la requête vers une méthode globale et prendre un nombre aléatoire comme Grinder.threadNo et l'utiliser pour retourner le script à exécuter. Cela exige également que vous supprimiez la boucle for car vous pouvez contrôler le nombre de fois que le script est exécuté ou le laisser fonctionner pendant une durée.

Exécuter 10 threads en parallèle est un bon début, puis vous pouvez voir lentement combien de requêtes sont acceptées.