Alex‘ Hauptfunktionen
Stresstestparameter für wiederholte Stresstests speichern
Stresstestberichte zur späteren Anzeige und Weitergabe speichern
Bietet einfache und direkte grafische und Textberichte
Kann Stresstests auf mehreren http-Schnittstellen gleichzeitig durchführen
Kann Stresstests auf mehreren Host:Port-Paaren im Cluster gleichzeitig durchführen
Verwenden Sie mehrere Sätze von Aufrufen von Parametern zur Vermeidung von Stresstests. Daten-Hotspot-Probleme, die auftreten, wenn
Schritteinstellungen verwenden, um progressive Druckquellen zu generieren
Eine einfache Echtzeit-Anzeigefunktion des Systemstatus der Druckprüfmaschine bereitstellen
Alex-Einschränkungen
Alex wird in einem einzigen Prozess ausgeführt. Wenn Sie eine verteilte Stresstestumgebung benötigen, müssen Sie mehrere Knoten gleichzeitig einsetzen.
Vegeta bietet keine Möglichkeit, bei Überlastung sofort aufzuhören. Dies erfordert, dass Sie die Stresstestschritte sorgfältig planen und den Systemstatus sorgfältig beobachten, um eine Systemüberlastung zu vermeiden.
Qps und Parallelität sollten nicht zu groß sein. Ich habe einmal das Alex-Tool verwendet, um das HelloWorld-Webprogramm in einem einzigen Prozess zu testen. Jede Anfrage spuckte 1.500 Bytes aus, und die QPS konnten bis zu 60.000 erreichen, was im Grunde die Gigabit-Netzwerkkarte füllte.
Versuchen Sie, die Gzip-Dekomprimierung bei großen Belastungstests zu vermeiden. Die Dekomprimierung beansprucht viele CPU-Ressourcen und kann zu ungenauen Stresstestberichten führen. Sie können umfangreiche Stresstests durchführen, indem Sie mehrere Knoten bereitstellen.
Unterstützt nur das HTTP-Protokoll. Die Unterstützung des HTTPS-Protokolls ist nicht geplant, da die Verschlüsselung und Entschlüsselung ebenfalls viele CPU-Ressourcen beansprucht, was zu ungenauen Berichten führt.
Der Bericht stellt lediglich eine Leistungsreferenz dar, und Sie müssen mutig genug sein, den Bericht in Frage zu stellen.
Obwohl Alex so viele Einschränkungen hat, hat dies keinen Einfluss auf die tägliche Nutzung.
Installieren
install mongodb install golang # 1.4+ is required go get github.com/go-martini/martini go get github.com/tsenart/vegeta go get gopkg.in/mgo.v2 go get github.com/shirou/gopsutil # godep restore git clone https://github.com/shellquery/alex.git cd alex go build ./alex ./alex -c config.json open browser http://localhost:8000/
config.json konfigurieren
{ "BindAddr": "localhost:8000", "MongoUrl": "mongodb://localhost:27017/alex", "Teams": [ "python", "java", "php", "go" ] }