2017-07-26 2 views
1

Ich möchte einen Upload-Service mit Hunderten, wenn nicht Tausende, von langsam HTTPS-Verbindungen gleichzeitig testen. Ich mag eine Menge, sagt sie, 3G-Qualität Verbindungen haben, gedrosselt jeweils mit niedriger Bandbreite und hohen Latenz, jeweils bis zu dem Server ein paar Megabyte an Daten senden, in vielen gleichzeitigen langlebigen Antrag vom Server gehandhabt werden.Load Testing Tausende von langsamen Verbindungen

Es gibt viele Tools zur Lastgenerierung, die Tausende von gleichzeitigen Anfragen generieren können. (Ich verwende derzeit Locust, meist so, dass ich Vorteil meiner vorhandenen in Python geschriebenen Clientbibliothek nehmen kann). Solche Tools führen in der Regel jede gleichzeitige Anforderung so schnell wie möglich über die freigegebene Netzwerkverbindung.

Es gibt verschiedene Möglichkeiten, um die scheinbare Bandbreite und Latenz der TCP-Verbindungen, wie Linux TC und handliche Wrapper wie Comcast einzustellen.

Soweit ich sagen kann, TC und dergleichen steuern die gemeinsame Verbindung , aber sie können nicht die einzelnen Anfragen Drosselung. Wenn Sie eine einzelne Anfrage drosseln möchten, funktioniert TC gut. vorbehaltlich die eingeschränkten Bandbreite, anstatt Ausführung gleichzeitig viele Anfragen haben, ein paar Pakete zu einer Zeit In der Theorie mit vielen Kunden den gleichen gedrosselten Netzwerk-Link teilen, jede Anforderung seriell, ausgeführt werden könnte. Ersteres würde zu viel weniger aktiven Anfragen führen, die gleichzeitig auf dem Server ausführen.

Ich vermute, dass das Werkzeug, das ich will, muss aktiv jedes einzelne Client senden und empfangen, um sie ziemlich zu drosseln. Gibt es ein solches Werkzeug?

Antwort

1

Sie einen Blick auf Apache JMeter nehmen es kann, „Gas“ Verbindungen zu dem Durchsatz konfigurierbar über die folgenden Eigenschaften:

httpclient.socket.http.cps=0 
httpclient.socket.https.cps=0 

Die Eigenschaften können entweder in user.properties Datei oder weitergegeben definiert werden JMeter über -J command-line argument

cps steht für character per second so können Sie "slow down" JMeter Threads (virtuellen Benutzer) auf die angegebenen Durchsatzrate, die Formel für die Berechnung cps ist:

cps = (target bandwidth in kbps * 1024)/8 

Weitere Informationen finden Sie unter How to Simulate Different Network Speeds in Your JMeter Load Test.

1

Ja, das sind Netzwerk-Simulatoren. Ein sehr primitiver ist in Form von WanEM. Es wird nicht Ihre Testanforderungen abdecken. Sie benötigen etwas, das Shunra Storm ähnelt, ein Hardware-Gerät, das individuelle Verbindungen und Beeinträchtigungen mit Ookla-basierten Modellen (Think speedtest.com) im Zusammenhang mit 3,4,5 g-Verbindungen aus der Wildnis verwalten kann. Nun, vielleicht sollte ich sagen, "könnte es schaffen", da dieses Produkt seit der Übernahme von Shunra durch HP nicht mehr vorhanden war.

Es gibt einige andere Marktkonkurrenten auf der Netzwerkfront von Unternehmen wie Ixia, Agilent, PacketStorm, Spirent und dergleichen. Keiner von ihnen ist preiswert, aber ich sehe dein Bedürfnis. Langsame und besonders schmutzige Verbindungen, wie Mobiltelefone, wirken sich überproportional auf den Stack aus und können dazu führen, dass dem Server weniger Ressourcen zur Verfügung stehen als mit mobilen Verbindungen.

Nebenbei bemerkt, stellen Sie sicher, dass Sie in Ihrem Testcode ein repräsentatives Modell für think time enthalten. Wenn Sie das Client-Server-Modell mit keine oder extrem begrenzte Denkzeit & das Netzwerk beeinträchtigen, können nur schlechte Dinge passieren. Dies wird sich besonders nachteilig auf die Vorhersagbarkeit und Wiederholbarkeit Ihrer Tests auswirken. Sie können auch Dutzende von Engineering-Ghosts im Zusammenhang mit dem Laden Ihres Codes ausführen, die in der Produktion aufgrund der natürlichen Verzögerungen und der Freigabe von Ressourcen nicht auftreten, die während dieser Aktivitätsfenster zwischen Clientanforderungen auftreten sollten.

Verwandte Themen