在這裡下載二進制。另外,請考慮引用我們。
HTTP負載生成器是一種負載生成器,旨在生成具有不同負載強度的HTTP負載。它使用Limbo指定的負載強度規格來生成隨著時間的推移強度變化(請求數)的負載。負載生成器日誌應用程序級別數據並支持連接到外部功率測量守護程序。它使用LUA腳本指定了HTTP請求,這些請求在運行時讀取。
HTTP負載生成器工具可以以兩種模式運行:作為導演和負載生成器。導演模式以解析必要的配置文件和腳本,連接到功率測量設備並收集數據的模式啟動該工具。負載生成器模式從主管接收指令並生成實際請求。該模式是使用命令行開關設置的,這意味著必須至少兩個HTTP負載生成器的實例進行測試,每個模式一個。 HTTP負載生成器還支持多節點負載生成,其中一位導演連接到以負載生成器模式運行的多個實例。
此讀數的結構:
負載發生器具有以下三個主要功能:
負載生成器可用於測試Web應用程序,以測試能源效率測試,隨著時間的時間測試縮放行為的測試以及時間依賴時間的場景,例如突然爆發的效果,請求模式,趨勢等的季節性變化等。
首先構建或下載httploadgenetor.jar。在兩台機器上部署httploadgenerator:
除了JAR之外,您還需要一個負載強度配置文件和LUA腳本來生成實際請求。我們為示例文件目錄中的每個人提供了一個示例:
下載文件並將其放在導演機器上。為簡單起見,我們將假設您將它們放置在與httploadgenerator.jar相同的目錄中。現在,您還將使用用於Web應用程序的呼叫來修改LUA腳本。對於最小示例,只需確保index.html和index.htm即可訪問,並輸入腳本第7行中託管Web應用程序的服務器的adress。
現在,在Load Generator上使用以下命令行,在LOAD GENERATOR模式下啟動HTTP LOAD GENERATOR。如果您使用多個負載發電機機,請在每個機器上執行此操作:
$ java -jar httploadgenerator.jar loadgenerator
接下來,在導演機器上以導演模式啟動HTTP負載生成器:
$ java -jar httploadgenerator.jar director --ip IP_OF_THE_LOAD_GENERATOR_MACHINE --load curveArrivalRates.csv -o testlog.csv --lua http_calls_minimal.lua
導演呼叫進行以下操作:
director開始導演模式。--ip指定負載生成器計算機的地址。對於多個負載生成器,請使用逗號定界符(無白色空間!)。--load指定負載強度(到達率)配置文件。-o指定包含結果的O utput日誌的名稱。--lua指定L UA腳本。主管現在將與負載生成器連接,發送負載強度配置文件,腳本和其他設置。然後,它將提示您按Enter開始測試。測試結束後,輸出日誌文件將出現在目錄中。
由於您並不總是想運行我們的示例配置文件,因此可以指定自己的示例配置文件。我們在單獨的文件中分別指定負載強度(到達率)和請求。
創建負載強度配置文件的最簡單方法是使用Limbo工具。 Limbo是用於建模到達率的日食插件。您可以使用圖形編輯器對到達率進行建模,然後將其導出到各種格式。 HTTP負載生成器支持其中兩種格式:
要獲取此格式的文件,請右鍵單擊Eclipse軟件包資源管理器中的.dlim模型的文件,然後選擇“生成時間戳記” 。出現帶有導出選項的對話框,我們的兩個支持選項應包括在其中。在以下對話框中,您可以選擇採樣間隔,這是Limbo採樣到達率的間隔,也是HTTP負載生成器重新調整到達率並報告結果的間隔。它可以自由配置,但建議間隔為1。
如果您不想使用Limbo(不過應該),也可以手動的到達率。文件的格式是一種簡單的CSV格式,第一列是每個調度間隔的中間時間印章,第二列是負載強度。間隔必須始終具有相同的步驟(例如始終增加1個),並且您可能不會跳過任何步驟!
例子:
0.5,10
1.5,20
2.5,30
請注意,時間戳始終是間隔的中間。這意味著它是0.5、1.5,...而不是0、1,...這是與Limbo的兼容性,在此決定更有意義。同樣,建議使用1秒(0.5、1.5、2.5,...)的間隔。
使用LUA腳本指定請求。我們建議修改其中一個示例,例如最小示例或Dell DVD商店示例。示例包含其代碼註釋中的解釋。
腳本中的兩個LUA函數來自HTTP Load Generator:
您可以使用正則表達式在OnCall函數中解析HTTP響應。我們提供HTML輔助功能(考慮響應通常為HTML)。具體來說,我們提供:
請注意,所有正則表達式直接傳遞給Java後端。必須指定它們,就好像它們是直接在Java代碼中指定的一樣。即,使用“ \”,而不是單個“ ”。
OnCall返回的URL使用http get調用。要在返回的URL之前發送HTTP POST請求,請在返回的URL之前進行預處[POST] (包括括號)。
您可以使用我們的HTTP腳本測試儀測試LUA腳本(在此處下載二進製文件)。 HTTP腳本測試器是一個圖形應用程序,可在圖形Web視圖中運行腳本並渲染HTML響應,以檢查腳本的正確功能。使用圖形用戶界面或使用以下命令行使用腳本測試儀:
$ java -jar httpscripttester.jar ./MYSCRIPTFILE.lua
我們建議使用命令行LAUCH,因為背景中的命令行將顯示潛在的錯誤和LUA打印語句,在調試時非常有用。
HTTP負載生成器支持連接到Power Analyzer Daemons。基礎架構背後的總體想法是連接到可能在電源分析器的單獨機器上運行的網絡守護程序。不幸的是,大多數Power Analyzer Daemons,例如SPEC PTDAEMON,都具有限制性許可,禁止其與HTTP負載生成器的使用或阻止我們為您提供給您。
我們在工具中提供iPowerCommunicator界面。針對此接口實現自己的電源守護程序通信器。 HIOKICommunicator是一個功能齊全的參考實現,該實現支持具有以太網功能的HIOKI功率測量設備。 TMCTLDCommunicator可以用作進一步的示例實現。
要使用您的電源通信器啟動HTTP負載生成器,請將其添加到ClassPath中,然後在導演模式下使用HTTP Load Generator的-C開關來指定通信器的完全Quailized類名稱。使用-P開關指定電源守護程序的網絡地址。您可以輸入多個逗號分隔地址。如果這樣做,主任將為每個地址中的每個地址實例化電源通信者,並將其結果記錄在單獨的列中。
示例(將電源通信器編譯到httploadgenerator.jar中):
$ 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
示例(將電源通信器編譯成單獨的jar):
$ 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
使用-h開關顯示幫助頁面:
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.
運行java -jar httploadgenerator.jar director -h為導演的幫助頁面:
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
其他示例:
$ 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
結果寫入輸出CSV文件。它們包含每個時間間隔的以下指標:
-u, --timout命令行開關所指定的。如果您在工作中使用HTTP負載生成器,請引用我們援引我們:
@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},
}