[PYTHON] Verteilte Ausführung von Locust auf einem Computer (CLI Edition)

Einführung

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

Betriebsüberprüfungsumgebung

Ausführungsmethode

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

Kommentar

Ergänzung

Warnprotokoll, wenn die CPU-Ressource nicht ausreicht

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.

Fußnote

Recommended Posts

Verteilte Ausführung von Locust auf einem Computer (CLI Edition)
RTKLIB 2.4.3 CLI-Version GUI-Version unter Ubuntu 18.04 installiert
Verwenden Sie die neueste Version von PyCharm unter Ubuntu