Laden Sie die Binärdatei hier herunter. Bitte erwägen Sie auch, uns zu zitieren.
Der HTTP -Lastgenerator ist ein Lastgenerator, mit dem HTTP -Lasten mit unterschiedlichen Lastintensitäten erzeugt werden. Es verwendet Lastintensitätsspezifikationen, wie von LIMBO angegeben, um Lasten zu erzeugen, die in der Intensität (Anzahl der Anforderungen pro Sekunde) im Laufe der Zeit variieren. Die Lastgeneratorprotokolldaten für Anwendungsebene und unterstützt die Verbindung zu externen Dämonen mit Strommessungen. Es gibt die HTTP-Anfragen an, die selbst LUA-Skripte verwenden, die zur Laufzeit gelesen werden.
Das HTTP -Lastgenerator -Tool kann in zwei Modi ausgeführt werden: als Regisseur und als Lastgenerator. Der Direktor -Modus startet das Tool in einem Modus, in dem es die erforderlichen Profile und Skripte analysiert, eine Verbindung zu Leistungsmessgeräten herstellt und Daten sammelt. Der Lastgeneratormodus empfängt vom Direktor Anweisungen und generiert die tatsächlichen Anforderungen. Der Modus wird mit Befehlszeilenschalter eingestellt, was bedeutet, dass mindestens zwei Instanzen des HTTP -Lastgenerators für einen Test ausgeführt werden müssen, einen in jedem Modus. Der HTTP-Lastgenerator unterstützt außerdem die Lastgenerierung von Multi-Knoten, wobei ein Regisseur mit mehreren Instanzen, die im Lastgeneratormodus ausgeführt werden, eine Verbindung herstellt.
Struktur dieser Readme:
Der Lastgenerator verfügt über die folgenden drei Hauptmerkmale:
Der Lastgenerator kann zum Testen von Webanwendungen zum Testen der Energieeffizienz, zum Testen des Skalierungsverhaltens im Laufe der Zeit und zum Testen zeitabhängiger Szenarien, wie z.
Erstellen oder laden Sie den httploadgenetor.jar zu oder laden Sie sie herunter. Stellen Sie den httploadgenerator auf zwei Maschinen ein:
Zusätzlich zum Glas benötigen Sie ein Lastintensitätsprofil und ein LUA -Skript, um die tatsächlichen Anforderungen zu generieren. Wir geben ein Beispiel für jedes im Beispiel für Beispielfiles: Verzeichnis:
Laden Sie beide Dateien herunter und platzieren Sie sie auf dem Director -Computer. Der Einfachheit halber gehen wir davon aus, dass Sie sie in das gleiche Verzeichnis wie den httploadgenerator.jar platzieren. Sie würden jetzt auch das LUA -Skript mit Anrufen für Ihre Webanwendung ändern. Stellen Sie für das minimale Beispiel sicher, dass index.html und index.htm zugänglich sind, und geben Sie die Adresse Ihres Servers ein, auf dem die Webanwendung in Zeile 7 des Skripts gehostet wird.
Starten Sie nun im Lastgenerator Computer den HTTP -Lastgenerator im Lastgeneratormodus unter Verwendung der folgenden Befehlszeile mit dem -L -Schalter. Wenn Sie mehrere Lastgenerator -Maschinen verwenden, tun Sie dies auf jedem von ihnen:
$ java -jar httploadgenerator.jar loadgenerator
Als nächstes starten Sie auf dem Director Machine den HTTP -Lastgenerator im Regie -Modus:
$ java -jar httploadgenerator.jar director --ip IP_OF_THE_LOAD_GENERATOR_MACHINE --load curveArrivalRates.csv -o testlog.csv --lua http_calls_minimal.lua
Der Direktoranruf führt Folgendes aus:
director startet den Regisseur -Modus.--ip gibt die Adresse der Lastgeneratormaschine an. Verwenden Sie für mehrere Lastgeneratoren einen Komma -Trennzeichen (keine weißen Räume!).--load gibt das Profil der Lastintensität (Ankunftsrate) an.-o Gibt den Namen des O -Utput -Protokolls an, das die Ergebnisse enthält.--lua gibt das L UA-Skript an.Der Direktor verbindet nun mit dem Ladegenerator und sendet das Lastintensitätsprofil, das Skript und andere Einstellungen. Sie werden dann aufgefordert, die Eingabetaste zu drücken, um den Test zu starten. Sobald der Test abgeschlossen ist, wird im Verzeichnis die Ausgabeprotokolldatei angezeigt.
Da Sie unsere Beispielprofile nicht immer ausführen möchten, können Sie Ihre eigenen angeben. Wir geben die Lastintensität (Ankunftsrate) und die Anforderungen getrennt in separaten Dateien an.
Die einfachste Art, ein Lastintensitätsprofil zu erstellen, ist das Ladungsintensität das Limbo -Tool. Limbo ist ein Eclipse -Plugin für die Modellierung der Ankunftsraten. Sie können die Ankunftsraten mit einem grafischen Editor modellieren und dann in verschiedene Formate exportieren. Der HTTP -Lastgenerator unterstützt zwei dieser Formate:
Um Dateien dieses Formats abzurufen, klicken Sie mit der rechten Maustaste auf die Datei eines .dlim -Modells im Eclipse -Paket -Explorer und wählen Sie Zeitstempel generieren . Ein Dialog mit Exportoptionen wird angezeigt, und unsere beiden unterstützten Optionen sollten unter ihnen sein. Im folgenden Dialog können Sie das Stichprobenintervall auswählen. Dies ist das Intervall, in dem die Ankunftsrate die Ankunftsrate probiert und auch das Intervall ist, in dem der HTTP-Lastgenerator die Ankunftsrate neu anpasst und die Ergebnisse meldet. Es kann frei konfiguriert werden, aber ein Intervall von 1 wird empfohlen.
Wenn Sie die Limbo nicht verwenden möchten (Sie sollten es sollten), können Sie auch die Ankunftsraten manuell speisen. Das Format der Datei ist ein einfaches CSV -Format, wobei die erste Spalte die mittlere Zeitstempel jedes Planungsintervalls und die zweite Spalte die Lastintensität ist. Intervalle müssen immer den gleichen Schritt haben (z. B. erhöhen sich immer um 1) und Sie können keine überspringen!
Beispiel:
0.5,10
1.5,20
2.5,30
Beachten Sie, dass der Zeitstempel immer die Mitte des Intervalls ist. Dies bedeutet, dass es 0,5, 1,5, ... anstelle von 0, 1, ... Dies ist für die Kompatibilität mit Limbo, wo diese Entwurfsentscheidung mehr Sinn macht. Auch hier werden Intervalle mit einer Zeit von 1 Sekunde (0,5, 1,5, 2,5, ...) empfohlen.
Die Anforderungen werden mit einem Lua -Skript angegeben. Wir empfehlen, eines der Beispiele wie das minimale Beispiel oder das Dell DVD Store -Beispiel zu ändern. Die Beispiele enthalten Erklärungen in ihren Code -Kommentaren.
Zwei LUA -Funktionen im Skript werden von HTTP -Ladegenerator aufgerufen:
Sie können die HTTP -Antwort in der OnCall -Funktion mit regulären Ausdrücken analysieren. Wir liefern HTML -Helferfunktionen (wenn man bedenkt, dass die Antwort normalerweise HTML ist). Insbesondere bieten wir an:
Beachten Sie, dass alle regulären Ausdrücke direkt an das Java -Backend übergeben werden. Sie müssen angegeben werden, als wären sie direkt im Java -Code angegeben. Dh "\" anstelle einer einzigen "".
URLs, die von OnCall zurückgegeben werden, werden unter Verwendung von HTTP GET aufgerufen. Um eine HTTP -Postanforderung zu senden, stellen Sie [Post] (einschließlich der Klammern) vor der zurückgegebenen URL vor.
Sie können Ihre LUA -Skripte mit unserem HTTP -Skript -Tester testen (laden Sie die Binärdatei hier herunter). Der HTTP -Skript -Tester ist eine grafische Anwendung, die das Skript ausführt und HTML -Antworten in einer grafischen Webansicht überprüft, um die korrekte Funktionalität des Skripts zu überprüfen. Der Skriptstester, der Ihre grafische Benutzeroberfläche verwendet oder die folgende Befehlszeile verwendet:
$ java -jar httpscripttester.jar ./MYSCRIPTFILE.lua
Wir empfehlen eine Befehlszeile Lauch, da die Befehlszeile im Hintergrund potenzielle Fehler und Lua -Druckanweisungen zeigt, was beim Debuggen sehr hilfreich ist.
Der HTTP -Lastgenerator unterstützt die Verbindung zu Power Analyzer Daemons. Die allgemeine Idee hinter der Infrastruktur besteht darin, eine Verbindung zu einem Netzwerk -Daemon herzustellen, das auf einer separaten Maschine mit dem Power Analyzer ausgeführt wird. Leider verfügen die meisten Dämonen des Stromanalysators, wie das Spezifikum PTDaemon, restriktive Lizenzen, die ihre Verwendung mit dem HTTP -Lastgenerator verbieten oder uns daran hindern, sie Ihnen zur Verfügung zu stellen.
Wir bieten eine iPowerCommunicator -Schnittstelle in den Tools.descartes.dlim.httploadgenerator.power -Paket. Implementieren Sie Ihren eigenen Power -Dämon -Kommunikator gegen diese Schnittstelle. Der Hiokicommunicator ist eine funktionierende Referenzimplementierung, die Ethernet-fähige Hioki-Leistungsmessgeräte unterstützt. Der TMCTLDCommunicator kann als weitere Beispielimplementierung verwendet werden.
Um den HTTP -Lastgenerator mit Ihrem Power Communicator zu starten, fügen Sie ihn dem Klassenpfad hinzu und geben Sie den Namen Ihres Kommunikators vollständig gefragt, indem Sie den -c -Switch des HTTP -Lastgenerators im Regie -Modus im Direktor -Modus verwenden. Verwenden Sie den -P -Switch, um die Netzwerkadresse Ihres Power -Daemon anzugeben. Sie können mehrere mit Kommas getrennte Adressen eingeben. Wenn Sie dies tun, wird der Direktor für jede dieser Adressen einen Power Communicator instanziiert und seine Ergebnisse in einer separaten Spalte protokolliert.
Beispiel (mit dem in der httploadgenerator.jar zusammengestellten Leistungskommunikator):
$ java -jar httploadgenerator.jar director --ip LOADGENIP --load myArrivalRates.csv -o myLog.csv -p PWRRDAEEMONIP:PWRDAEMONPORT -c my.fully.qualified.Classname --lua./http_calls.lua
Beispiel (mit dem in einem separaten Glas zusammengestellten Power Communicator):
$ java -cp "MYJAR.jar;httploadgenerator.jar" tools.descartes.dlim.httploadgenerator.runner.Main director --ip LOADGENIP --load myArrivalRates.csv -o myLog.csv -p PWRRDAEEMONIP:PWRDAEMONPORT -c my.fully.qualified.Classname --lua ./http_calls.lua
Verwenden Sie den -h -Switch, um die Hilfeseite anzuzeigen:
Usage: java -jar httploadgenerator.jar COMMAND [<options>...]
HTTP load generator for varying load intensities.
-h, --help Display this help message.
Commands:
director Run in director mode.
loadgenerator Run in director mode.
Führen Sie java -jar httploadgenerator.jar director -h für die Hilfeseite des Regisseurs aus:
Run in director mode.
Usage: java -jar httploadgenerator.jar director [<options>...]
Runs the load generator in director mode. The director parses configuration
files, connects to one or multiple load generators, and writes the results to
the result csv file.
--randomize-users With this flag, threads will not pick users (HTTP input
generators, LUA script contexts) in order. Instead, each
request will pick a random user. This setting can
compensate for burstiness, caused by the fixed order of
LUA calls. It is highly recommended to configure long
warmup times when randomizing users.
--wd, --warmupduration, --warmup-duration=WARMUP_DURATION
Duration of the warmup period in seconds. Warmup is
skipped if set to 0.
Default: 30
--wp, --warmupause, --warmup-pause=WARMUP_PAUSE
Duration of the pause after conclusion of the warmup
period in seconds. Ignored if warmup is skipped.
Default: 5
--wr, --warmup, --warmuprate, --warmup-rate=WARMUP_RATE
Load intensity for warmup period. Warmup is skipped if set
to < 1.
Default: 0.0
-a, --load, --arrivals, --loadintensity=ARRIVALRATE_FILE
Path of the (LIMBO-generated) arrival rate file.
Default: arrivalrates.csv
-c, --class, --classname, --powerclass=POWER_CLASS
Fully qualified classname of the power communicator. Must
be on the classpath.
-h, --help Display this help message.
-l, --lua, --script=LUASCRIPT
Path of the lua script that generates the call URLs.
Default: http_calls.lua
-o, --out, --log, --csv, --outfile=OUT_FILE
Name of output log relative to directory of arrival rate
file.
Default: default_log.txt
-p, --power, --poweraddress=POWER_IP[:POWER_PORT]
Adress of powerDaemon. Multiple addresses are delimited
with ",". No address => no power measurements.
Default: []
-r, --seed, --random, --randomseed=SEED
Integer seed for the random generator. Seed of 0 =>
Equi-distant dispatch times.
Default: 5
-s, --ip, --adress, --generator=IP
Adress of load generator(s). Multiple addresses are
delimited with ",".
Default: [127.0.0.1]
-t, --threads, --threadcount=NUM_THREADS
Number of threads used by the load generator. Increase
this number in case of dropped transactions.
Default: 128
-u, --timeout=TIMEOUT Url connection timeout in ms. Timout of 0 => no timout.
Default: 0
Zusätzliches Beispiel:
$ java -jar httploadgenerator.jar director -s 192.168.0.201 -a ./arrivalRates/test.txt -o myLog.csv -p 127.0.0.1:8888 -c tools.descartes.dlim.httploadgenerator.power.TMCTLDCommunicator -l ./http_calls.lua
Die Ergebnisse werden in die Ausgabe -CSV -Datei geschrieben. Sie enthalten die folgenden Metriken für jedes Zeitintervall:
-u, --timout angegeben.Bitte leiten Sie uns an, wenn Sie den HTTP -Lastgenerator in Ihrer Arbeit verwenden:
@inproceedings{KiDeKo2018-ICAC-PowerPrediction,
author = {J{'o}akim von Kistowski and Maximilian Deffner and Samuel Kounev},
booktitle = {Proceedings of the 15th IEEE International Conference on Autonomic Computing (ICAC 2018)},
location = {Trento, Italy},
month = {September},
title = {{Run-time Prediction of Power Consumption for Component Deployments}},
year = {2018},
}