Locust.io: Steuern des Parameters "Anfrage pro Sekunde"

Ich habe versucht, meinen API-Server mithilfe von Locust.io auf rechneroptimierten EC2-Instanzen zu laden. Es bietet eine einfach zu konfigurierende Option zum Einstellen desaufeinanderfolgende Anforderungswartezeit undnzahl gleichzeitiger Benutz. In der Theorie, rps = Wartezei X # _ Benutzer. Beim Testen wird diese Regel jedoch für sehr niedrige Schwellenwerte von @ aufgehobe # _ Benutzer (in meinem Experiment ungefähr 1200 Benutzer). Die Variablen hatch_rate, # _ of_slaves, auch in einemverteilte Testeinstellung hatte wenig bis gar keine Auswirkung auf das rps.

Experiment info

Der Test wurde auf einem C3.4x AWS EC2-Rechenknoten (AMI-Image) mit 16 vCPUs, einer allgemeinen SSD und 30 GB RAM durchgeführt. Während des Tests lag die maximale CPU-Auslastung bei 60% (abhängig von der Schraffurrate - die die gleichzeitig ausgeführten Prozesse steuert) und blieb durchschnittlich unter 30%.

Locust.io

setup: Verwendet pyzmq und wird mit jedem vCPU-Core als Slave eingerichtet. Einrichtung einer einzelnen POST-Anforderung mit einem Anforderungshauptteil von ~ 20 Byte und einem Antworthauptteil von ~ 25 Byte. Anforderungsfehlerrate: <1% mit einer durchschnittlichen Antwortzeit von 6 ms.

variables: Zeit zwischen aufeinanderfolgenden Anforderungen auf 450 ms (min: 100 ms und max: 1000 ms), Schraffurrate auf komfortable 30 pro Sekunde und RPS gemessen durch Variieren von # _ Benutzer.

Der RPS folgt der für bis zu 1000 Benutzer vorhergesagten Gleichung. Zunehmendes # _ Benutzer hat danach abnehmende Renditen mit einer Obergrenze von ungefähr 1200 Benutzern. # _ Benutzer hier ist nicht die unabhängige Variable, die das @ ändeWartezei wirkt sich auch auf den RPS aus. Das Ändern der Versuchsanordnung in eine 32-Kerne-Instanz (c3.8x-Instanz) oder in eine 56-Kerne-Instanz (in einer verteilten Anordnung) wirkt sich jedoch überhaupt nicht auf den RPS aus.

So wirklich, wie kann man den RPS steuern? Gibt es etwas offensichtliches, was ich hier vermisse?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage