Im Python-Lasttest-Tool Locust kann die Parallelisierung durch die Koordination mehrerer Prozesse den zu testenden Host stark belasten. In diesem Artikel werde ich Ihnen zeigen, wie dies mit einer einzelnen Multi-Core-Maschine gemacht wird. Die Web-Benutzeroberfläche wird nicht verwendet. [^ 1]
In der offiziellen Dokumentation wird es auf der folgenden Seite vorgestellt.
[^ 1]: Die Verwendung der Web-Benutzeroberfläche wird in Vorbereiten einer verteilten Lasttestumgebung mit dem Python-Lasttest-Tool Locust - Qiita vorgestellt. Es ist gewesen.
Im Folgenden wird davon ausgegangen, dass die Ausführungsumgebung von locust
bereit ist. [^ 2]
Außerdem werde ich nicht erklären, wie man eine Lokalisierungsdatei schreibt.
[^ 2]: Klicken Sie hier, um Locust zu installieren: https://docs.locust.io/en/stable/installation.html
Erstellen Sie einfach ein Shell-Skript wie das folgende und führen Sie es aus.
run-locust-distributed.sh
#!/usr/bin/env bash
set -uc
#Erstellen Sie ein Protokoll- und Berichtsausgabezielverzeichnis
mkdir -p logs output
host=https://example.com #Zielhost testen
locustfile=yourlocustfile.py
slave_num=8 #Anzahl der Sklaven (Anzahl der Parallelen)- 1)
master_port=5557
max_clients=200 #Maximale Anzahl von Clients
duration=90m #Gesamtausführungszeit
step_clients=5 #Erhöhte Anzahl von Kunden/Intervall
step_interval=1m #Intervall
# master
taskset -c 0 locust -f $locustfile --no-web \
-c $max_clients -t $duration -H $host \
--master --expect-slaves $slave_num --master-bind-port $master_port \
--step-load --step-clients $step_clients --step-time $step_interval \
--logfile logs/locust.master.log -L WARNING --csv output/locust.master \
&> /dev/null &
# slaves
for no in $(seq 1 ${slave_num}); do
taskset -c $no locust -f $locustfile --no-web \
-c $max_clients -H $host \
--slave --master-host 127.0.0.1 --master-port $master_port \
--logfile logs/locust.slave$no.log -L WARNING --csv output/locust.slave$no \
&> /dev/null &
done
Wenn die CPU-Ressource des Locust-Ausführungshosts nicht ausreicht, wird das folgende Protokoll ausgegeben. Wenn ein solches Protokoll angezeigt wird, kann die erwartete Last möglicherweise nicht angewendet werden. Daher ist es besser, eine Parallelisierung mit einer Master-Slave-Konfiguration oder eine Erhöhung der Anzahl der Slaves in Betracht zu ziehen.
Für einen einzelnen Prozess:
[2020-04-15 05:57:28,228] hostname/WARNING/root: Loadgen CPU usage above 90%! This may constrain your throughput and may even give inconsistent response time measurements! See https://docs.locust.io/en/stable/running-locust-distributed.html for how to distribute the load over multiple CPU cores or machines
Bei verteilter Ausführung in einer Master-Slave-Konfiguration:
#Masterseite
[2020-04-15 07:41:01,928] hostname/WARNING/locust.runners: Slave hostname_886b86153c0c4a839a5dc35a190be166 exceeded cpu threshold (will only log this once per slave)
[2020-04-15 07:43:50,863] hostname/WARNING/locust.runners: CPU usage threshold was exceeded on slaves during the test!
#Die Slave-Seite ist die gleiche wie bei einem einzelnen Prozess, daher wird sie weggelassen.