Stresstest mit Locust in Python geschrieben

Dieser Artikel ist der zweite Tag von Brainpad Advent Calender 2019

Hallo @ ist nissy0409240 Ich bin Ingenieur bei BrainPad Es ist weniger als ein Monat im Jahr 2019 gewesen Wie geht es allen

Ich konnte dieses Jahr privat zum Tokyo Dome gehen Es war ein bewegendes Jahr image.png Apropos Tokyo Dome, Baseball Apropos Baseball, Krüge und Batters In diesem Eintrag unabhängig von einem solchen Vorwort Ich werde die Grundfunktionen von Locust vorstellen, einem Lasttest-Tool, mit dem Sie Szenarien in Python schreiben können.

Was ist Heuschrecke?

Locust ist ein Python-Lasttest-Tool mit einer GUI-Oberfläche. Das größte Merkmal im Vergleich zu anderen Lasttest-Tools ist, dass Sie Szenarien in Python schreiben können. Es klingt wie ein Wortspiel, aber Sie können auch sagen, dass Sie ein Szenario in Python schreiben müssen.

Klicken Sie hier für verschiedene Links wie offizielle Dokumente

Locust ist übrigens ein englisches Wort für Batta oder Locust.

image.png Die Abbildung ist Tonosamabatta

Wie installiert man

Ich werde es sofort installieren Führen Sie zum Installieren einfach den folgenden Befehl aus

$ brew install libev
$ python3 -m pip install locustio

Führen Sie nach der Ausführung den Befehl $ locust --help aus. Wenn Hilfe angezeigt wird, ist die Installation erfolgreich.

image.png Die Abbildung ist Heuschrecke

Erstellen Sie ein Szenario

Das Szenario ist in einem Python-Skript geschrieben. Der Dateiname selbst unterliegt keinen Einschränkungen. Wenn Sie jedoch beim Start den Dateinamen nicht angeben, wird der mit dem Dateinamen "locustfile.py" ausgeführt. Wenn es keine Einschränkungen für den Dateinamen gibt, wird empfohlen, den Dateinamen "locustfile.py" zu verwenden.

Unten ist ein Beispiel

from locust import HttpLocust, TaskSet, task, between


class WebsiteTasks(TaskSet):
    @task
    def index(self):
        self.client.get('/')
        

class WebsiteUser(HttpLocust):
    task_set = WebsiteTasks
    wait_time = between(5, 15)

Der API-Server, den Sie erhalten, ist übrigens so

from wsgiref.simple_server import make_server

import json


def api(environ, start_response):
    status = '200 OK'
    headers = [
        ('Content-type', 'application/json; charset=utf-8'),
        ('Access-Control-Allow-Origin', '*'),
    ]
    start_response(status, headers)

    return [json.dumps({'message':'hoge'}).encode("utf-8")]

with make_server('', 3000, api) as httpd:
    print("Serving on port 3000...")
    httpd.serve_forever()

image.png Die Abbildung ist Shoryo Bata

Anlaufen

Beginnen Sie mit dem folgenden Befehl

$ locust
[2019-12-01 00:56:13,884] locust.main: Starting web monitor at *:8089
[2019-12-01 00:56:13,885] locust.main: Starting Locust 0.9.0

Im obigen Beispiel werden keine Optionen ausgeführt

Datei mit dem Szenario, das Sie mit der Option -f ausführen möchten Sie können den Endpunkt, den Sie treffen möchten, mit der Option -H angeben

Standardmäßig startet der Locust-Prozess an Port 8089 Es ist möglich, den Startport mit der Option -P zu ändern.

Wenn Sie es richtig angeben Beginne so

$ locust -f locustfile.py -H http://localhost:3000 -P 8089
[2019-12-02 03:38:42,717] locust.main: Starting web monitor at *:8089
[2019-12-02 03:38:42,718] locust.main: Starting Locust 0.13.2

image.png Die Abbildung zeigt eine gekochte Heuschrecke

Testlauf

Wenn Sie nach dem Start über Ihren Browser auf http: // localhost: 8089 zugreifen Sie können auf die folgende GUI zugreifen

スクリーンショット 2019-12-02 3.39.14.png Der Endpunkt, den Sie erreichen möchten, den Sie zuvor beiläufig angegeben haben, ist standardmäßig festgelegt スクリーンショット 2019-12-02 3.08.26.png * Wenn beim Start kein Host angegeben ist, ist der Host leer.

Es gibt Einstellungselemente, die leer sind. Geben Sie daher die folgenden Werte ein 100 bis "Anzahl der zu simulierenden Benutzer" 1 für "Schraffur"

Die Bedeutung von jedem ist wie folgt

Number of users to simulate:Wie viele Clients müssen erstellt werden?(Synonym dafür, wie viele Anfragen maximal pro Sekunde gesendet werden)
Hatch rate:Geschwindigkeit bei der Clienterstellung(Jede Sekunde)
Host:Zielendpunkt

Senden Sie diesmal eine Anfrage an "http: // localhost: 3000", die sich pro Sekunde um 1 Client erhöht. Zu diesem Zeitpunkt wird die maximale Anzahl von Clients auf 100 erhöht. Unter der Bedingung ausführen

スクリーンショット 2019-12-02 23.36.11.png

Drücken Sie nach der Eingabe die Schaltfläche "Schwarm starten", um die Anforderung auszuführen

スクリーンショット 2019-12-02 21.40.38.png

Wenn Sie die Ausführung stoppen möchten, drücken Sie die STOP-Taste oben rechts im Browser Nach dem Drücken von STATUS wird STATUS angehalten und Sie können bestätigen, dass der Vorgang abgeschlossen ist.

スクリーンショット 2019-12-02 21.42.49.png

image.png Die Abbildung zeigt eine Horde von Batta und Heuschrecken

Metriken

Sie können die Metriken auch auf der Registerkarte Diagramme anzeigen スクリーンショット 2019-12-02 22.00.39.png スクリーンショット 2019-12-02 22.01.34.png Dies ist eine Metrik, wenn Sie jede Sekunde um 1 Client erhöhen. Wenn Sie bis zu 100 Clients erhöhen, fordern Sie weiterhin mit 100 Clients an

Als nächstes wollen wir sehen, was passiert, wenn die Anforderung fehlschlägt. Dieses Mal werde ich versuchen, den Prozess des API-Servers in der Mitte zu stoppen

スクリーンショット 2019-12-02 22.44.48.png スクリーンショット 2019-12-02 22.43.59.png スクリーンショット 2019-12-02 22.44.18.png スクリーンショット 2019-12-02 22.44.38.png Sie können dies auf jeder Registerkarte überprüfen So erhöhen Sie die Anzahl fehlgeschlagener Anforderungen und das Verhältnis von Fehlern zur Gesamtzahl der Anforderungen Sie können auch auf der Registerkarte Fehler überprüfen, warum dies fehlgeschlagen ist.

Sie können die Ergebnisse auch von der Registerkarte Downloads Data herunterladen. スクリーンショット 2019-12-02 23.23.27.png

Der Inhalt der heruntergeladenen Datei ist wie folgt スクリーンショット 2019-12-02 23.24.55.png

image.png Die Abbildung ist eine Figur von Bata

Fazit

Wie oben erwähnt, haben wir Locust eingeführt, obwohl es nur Grundfunktionen hat. Abschied mit der Illustration des Teigs Vielen Dank, dass Sie bis zum Ende bei uns bleiben

image.png

Referenz

https://qiita.com/yamionp/items/17ffcc465272ad83c490 https://inside.pixiv.blog/east/5407 https://blog.htmlhifive.com/2015/08/14/web-server-load-testing-tools-2-locust/ https://docs.locust.io/en/stable/installation.html https://docs.locust.io/en/stable/quickstart.html https://co3k.org/blog/load-test-by-locust

Recommended Posts

Stresstest mit Locust in Python geschrieben
Primzahlbeurteilung mit Python
Primzahlbeurteilung mit Python
Schaben mit Selen in Python
Betreiben Sie LibreOffice mit Python
Schaben mit Chromedriver in Python
Algorithmus in Python (Haupturteil)
Debuggen mit pdb in Python
Umgang mit Sounds in Python
Scraping mit Selen in Python
Axialsymmetrische Spannungsanalyse mit Python
Scraping mit Tor in Python
Tweet mit Bild in Python
Kombiniert mit Ordnungszahl in Python
Laden Sie den Test-Websocket mit Locust
Gacha geschrieben in Python -BOX Gacha-
Stellen Sie den Python-Test in Jenkins ein
Veriloggen und Cocotb werden nur zum Entwerfen und Testen von Verilog in Python verwendet.
Cooles Lisp geschrieben in Python: Hy
Testen mit Zufallszahlen in Python
GOTO in Python mit erhabenem Text 3
Arbeiten mit LibreOffice in Python: Importieren
Scraping mit Selen in Python (Basic)
CSS-Analyse mit cssutils in Python
Numer0n mit Elementen, die mit Python erstellt wurden
Öffnen Sie UTF-8 mit Stückliste in Python
Kompatibilitätsdiagnoseprogramm in Python geschrieben
Verwenden Sie rospy mit virtualenv in Python3
Unit Test Log Ausgabe mit Python
Schreiben Sie Selentestcode in Python
Verwenden Sie Python in pyenv mit NeoVim
Heatmap mit Dendrogramm in Python + Matplotlib
Lesen Sie Dateien parallel zu Python
Statistischer Test (Mehrfachtest) in Python: scikit_posthocs
Passwort für Lehrbuch mit Python generieren
Verwenden Sie OpenCV mit Python 3 in Window
Bis zum Umgang mit Python in Atom
Einfache Gacha-Logik in Python geschrieben
Beginnen Sie mit Python mit Blender
Arbeiten mit DICOM-Bildern in Python
Konvertieren Sie in Python usw. geschriebene Dateien in PDF mit Syntax-Hervorhebung
Bereiten Sie eine verteilte Lasttestumgebung mit dem Python-Lasttest-Tool Locust vor
Konvertieren Sie in PyTorch geschriebenes Python-Skript mit PyInstaller in exe
Holen Sie sich mit Python zusätzliche Daten zu LDAP
In Python geschriebener Fourier-Serien-Verifizierungscode
Spiralbuch in Python! Python mit einem Spiralbuch! (Kapitel 14 ~)
Versuchen Sie, sich mit Python bei qiita anzumelden
Testen Sie nicht funktionalisierte Python-Programme mit GitLab CI
Python3> im Schlüsselwort> Wahr mit teilweiser Übereinstimmung?
Exklusive Steuerung mit Sperrdatei in Python
Geräteüberwachung durch On-Box Python von IOS-XE
WebUI-Test mit Python2.6 + Selenium 2.44.0 - Profileinstellung
Schreiben Sie den Test in die Python-Dokumentzeichenfolge
Versuchen Sie, mit Binärdaten in Python zu arbeiten
Generieren Sie japanische Testdaten mit Python faker
Zeichnen Sie Nozomi Sasaki in Excel mit Python
Übergangswahrscheinlichkeit der in Python geschriebenen Markov-Kette
Tipps zum Umgang mit Binärdateien in Python
2D FEM Stressanalyseprogramm von Python