Ich benutze JMeter, um einen Apache2-Server zu testen, den ich konfiguriert habe. Ich möchte testen, ob der Server 200 HTTP-Anfragen, die jede Sekunde kommen, für eine hohe Anzahl von Sekunden (wie 1 Minute oder mehr) wiederholt verarbeiten kann. Ich habe die JMeter-Dokumentation gelesen, aber es war ein wenig schwierig zu verstehen, wie die Timer funktionierten. Ich baute den Test mitSenden von HTTP-Anfragen zu bestimmten Zeitpunkten mit JMeter
- Numbers of Threads 200
- Ramp-up period 1
- Loop Count 100
Nun, soweit ich verstanden und bemerkte, das Verhalten von JMeter ist zu versuchen, die 200 Fäden in 1 Sekunde zu erhöhen, und dann 200 * 100 = 20000 Anfragen durchführen, so schnell wie möglich (oder zumindest ist dies das Verhalten, das ich auf meinem Server habe), in Stücken von 200 Anfragen pro Zeit. Dies bedeutet, dass der Server (tatsächlich) mehr als 200 Anfragen pro Sekunde erhält. Das Verhalten, das ich reproduzieren möchte, ist stattdessen, 200 Anfragen genau jede Sekunde zu haben. Es ist mir egal, ob sie zu Beginn der Sekunde alle zusammen kommen, oder sie kommen in einer zufälligen Weise, verteilen das zweite Fenster (eines alle 5 Millisekunden oder was auch immer). Also habe ich einige Timer ausprobiert, aber ohne Erfolg. Ich habe versucht:
Constant Timer
mit einer Thread-Verzögerung von 5 Millisekunden. Bei der Berechnung sollte es alle 5 Millisekunden eine Anfrage senden, und 200 Threads sollten 200 Anfragen/Sekunde (200 * 5 = 1000ms) senden.Constant Throughput Timer
mit einem Zieldurchsatz von 12000.0. Vielleicht liege ich hier falsch, aber das sollten Proben pro Minute sein, also 200 Anfragen pro 60 Sekunden sind 200 * 20 = 12000 (wenn eine Probe eine Anfrage ist). Ich habe die Option "Durchsatz berechnen basierend auf" nicht verstanden und habe sowohl "nur diesen Thread" (welcher?) Als auch "alle aktiven Threads" ausprobiert.
Wie auch immer, nichts von dieser Konfiguration verhält sich wie ich brauche.
Versuchen Sie, die 'Constant Timer' mit 1000 verwenden Millisekunden. Jeder Thread sollte dann jede Sekunde eine Anfrage für 200 Anfragen/Sekunde machen. – RowlandB
Um 200 Verbindungen in einer Sekunde aufzurufen, sollten Sie [Synchronizing Timer] (http://jmeter.apache.org/usermanual/component_reference.html#Synchronizing_Timer) verwenden. Der Zweck des SyncTimers besteht darin, Threads zu blockieren, bis die Anzahl der Threads X blockiert wurde, und dann alle auf einmal freigegeben werden. Ein SyncTimer kann somit große Momentanlasten an verschiedenen Punkten des Testplans erzeugen. – Adnan