在这里下载二进制。另外,请考虑引用我们。
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},
}