2017-05-26 3 views
-1

Jmeter config:Django jMeter Api Tests scheitern an http Timeout Verbindung fehl

Webserver:

Servername: 120.0.0.1

Port-Nr: 9000

Timeouts

Verbinden: Leer

Antwort: Leer

Methode: GET

Gewinde Benutzer: 500

Ramp-up: 1

Zählschleife: 1 (Kontrollkästchen markiert nicht)

In 500 Benutzer 70 Benutzer nicht

Hier ist Code

@api_view(['GET']) 
def country_list(request): 
    #country = cache.get('country') 

    try: 
     countryData = Country.objects.values('country_id','country_name').all().order_by('country_name') 
     #countryData = Country.objects.extra(select={'name': 'country_name','id':'country_id'}).values('id','name').all().order_by('country_name')[:5] 
     serializer = CountrySerializer(countryData,many=True) 
     #cache.set('country', serializer.data, 30) 
     return JsonResponse({'data': serializer.data, 'error': 0 }) 
    except (KeyError, Country.DoesNotExist): 
     return JsonResponse({ 'error': 1 }) 

und Antwort ist hier

Thread Name: country 1-169 
Sample Start: 2017-05-26 15:43:44 IST 
Load time: 21014 
Connect Time: 0 
Latency: 0 
Size in bytes: 2015 
Sent bytes:0 
Headers size in bytes: 0 
Body size in bytes: 2015 
Sample Count: 1 
Error Count: 1 
Data type ("text"|"bin"|""): text 
Response code: Non HTTP response code: java.net.ConnectException 
Response message: Non HTTP response message: Connection timed out: connect 
HTTPSampleResult fields: 
ContentType: 
DataEncoding: null 

Antwort

0

So sieht es aus wie Sie den Engpass in Ihrer Anwendung gefunden. Es ist jedoch schwer zu sagen, wie viele Benutzer maximal bedient werden können, um eine angemessene Antwortzeit zu erhalten und wann der Fehler auftritt.

Ich würde folgende Änderungen empfehlen:

  1. Stellen Sie sicher, Sie laufen JMeter und Django-Anwendung auf verschiedenen Hosts (JMeter sehr intensiv ist, Ressourcen- und diese Weise können Sie eine gegenseitige Beeinflussung vermeiden wird)
  2. ändern Ramp-up etwas über 1 Sekunde (dh, es sind 500 Sekunden, damit JMeter jede Sekunde einen Benutzer hinzufügt). Die Idee ist, die Last zu erhöhen allmählich auf diese Weise werden Sie in der Lage sein, steigende Antwortzeit mit der zunehmenden Belastung zu korrelieren und werden in der Lage, Sättigung und Fehlerpunkte genau zu bestimmen. Weitere Informationen finden Sie unter JMeter Ramp-Up - The Ultimate Guide.
  3. ändern Loop Count zu -1 so würden Ihre Anfragen Schleife für immer
  4. Gewünschte Testdauer im „Scheduler“ -Abschnitt des Ebene Thread Group
  5. Monitor-O Ressourcenverbrauches auf Django-Server heißt JMeter PerfMon Plugin verwenden.

Also, wenn ein Fehler auftritt, den Sie zumindest die folgenden wissen sollten:

  • wie viele Benutzer gleichzeitig da waren, als es passiert ist (Sie es mit Active Threads Over Time Hörer oder HTML Reporting Dashboard anzeigen können)
  • ob das Scheitern wird durch das Fehlen von zB CPU oder RAM verursacht. Wenn nicht, würden weitere Schritte Ihre Backend-Konfiguration untersuchenob die Konfiguration des Web-/Datenbankservers für diese vielen Verbindungen geeignet ist, prüfen Sie die Protokolle auf verdächtige Einträge, verwenden Sie Python Profiling Tools, um den Grund der Langsamkeit oder des Fehlers zu ermitteln, usw.)