Загрузите бинарку здесь. Также, пожалуйста, рассмотрите возможность ссылаться на нас.
Генератор нагрузки HTTP - это генератор нагрузки, предназначенный для генерации HTTP -нагрузок с различными интенсивностью нагрузки. Он использует спецификации интенсивности нагрузки, как указано в Limbo для генерации нагрузок, которые различаются по интенсивности (количество запросов в секунду) с течением времени. Генератор нагрузки регистрирует данные уровня приложения и поддерживает подключение к измерению внешней мощности. Он определяет HTTP-запросы, используя сценарии Lua, которые читаются во время выполнения.
Инструмент генератора нагрузки HTTP можно запускать в двух режимах: как директор и в качестве генератора нагрузки. Режим директора запускает инструмент в режиме, где он анализирует необходимые профили и сценарии, подключается к устройствам измерения питания и собирает данные. Режим генератора нагрузки получает инструкции от директора и генерирует фактические запросы. Режим устанавливается с использованием коммутаторов командной строки, что означает, что по крайней мере два экземпляра генератора нагрузки HTTP должны работать для теста, по одному в каждом режиме. Генератор нагрузки HTTP также поддерживает генерацию многоузлетных нагрузков, где один директор подключается к нескольким экземплярам, работающим в режиме генератора нагрузки.
Структура этого чтения:
Генератор нагрузки имеет следующие три основные функции:
Генератор нагрузки может использоваться для тестирования веб-приложений, касающихся тестирования энергоэффективности, тестирования поведения масштабирования с течением времени и тестирования зависимых от времени сценариев, таких как эффект внезапных всплесков, сезонные изменения в схеме запроса, тенденции и т. Д.
Сначала построить или загрузить httploadgenetor.jar. Развернуть HttploadGenerator на двух машинах:
В дополнение к JAR вам нужен профиль интенсивности нагрузки и сценарий LUA для создания фактических запросов. Мы приводим пример для каждого в каталоге примерафиллов:
Загрузите оба файла и поместите их на машину директора. Для простоты мы предположим, что вы помещаете их в тот же каталог, что и httploadgenerator.jar . Теперь вы также измените сценарий LUA с помощью звонков для вашего веб -приложения. Для минимального примера просто убедитесь, что index.html и index.htm доступны и введите адрес вашего сервера, размещающего веб -приложение в строке 7 сценария.
Теперь на машине генератора нагрузки запустите генератор нагрузки HTTP в режиме генератора нагрузки, используя следующую командную строку с переключателем -l . Если вы используете несколько машин генератора нагрузки, сделайте это на каждом из них:
$ 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 - это плагин Eclipse для моделирования скорости прибытия. Вы можете моделировать скорости прибытия с помощью графического редактора, а затем экспортировать их в различные форматы. Генератор нагрузки HTTP поддерживает два из этих форматов:
Чтобы получить файлы этого формата, щелкните правой кнопкой мыши файл модели .DLIM в Exclipse Package Explorer, затем выберите «Сгенерировать марки времени» . Появляется диалог с параметрами экспорта, и наши два поддерживаемых параметра должны быть среди них. В следующем диалоговом окне вы можете выбрать интервал выборки, это интервал, в котором подвешенное мнение выбирает скорость прибытия, а также является интервалом, при котором генератор нагрузки HTTP повторно поддерживает скорость прибытия и сообщает результаты. Это может быть свободно настроено, но рекомендуется интервал 1.
Если вы не хотите использовать Limbo (хотя, хотя), вы также можете вручную повысить показатели прибытия вручную. Формат файла представляет собой простой формат CSV с первым столбцом, который является средним маркой каждого интервала планирования, а второй столбец - интенсивность нагрузки. Интервалы всегда должны иметь один и тот же шаг (например, всегда увеличение на 1), и вы не можете пропустить ни одного!
Пример:
0.5,10
1.5,20
2.5,30
Обратите внимание, что марка времени всегда является серединой интервала. Это означает, что это 0,5, 1,5, ... вместо 0, 1, ... это для совместимости с подвешенным состоянии, где это дизайнерское решение имеет больше смысла. Опять рекомендуется интервалы с периодом 1 секунды (0,5, 1,5, 2,5, ...).
Запросы указаны с использованием сценария LUA. Мы рекомендуем изменить один из примеров, например, минимальный пример или пример магазина DELL DVD. Примеры содержат объяснения в их комментариях кода.
Две функции LUA в скрипте вызываются из генератора нагрузки HTTP:
Вы можете анализировать ответ HTTP в функции OnCall , используя регулярные выражения. Мы предоставляем вспомогательные функции HTML (учитывая, что ответ обычно является HTML). В частности, мы предлагаем:
Обратите внимание, что все регулярные выражения передаются непосредственно в бэкэнд Java. Они должны быть указаны, как если бы они были указаны непосредственно в коде Java. Т.е. используйте "\" вместо одного "".
URL -адреса, возвращаемые Oncall , называются http get. Чтобы отправить запрос на почту HTTP, приготовьте [post] (включая кронштейны) перед возвращенным URL.
Вы можете проверить свои сценарии LUA, используя наш тестовый тестовый скрипт HTTP (загрузите двоичный файл здесь). Тестер скрипта HTTP - это графическое приложение, которое запускает сценарий и отображает ответы HTML в графическом веб -представлении, чтобы проверить правильную функциональность сценария. Lauch тестер скрипта, используя ваш графический пользовательский интерфейс или используя следующую командную строку:
$ java -jar httpscripttester.jar ./MYSCRIPTFILE.lua
Мы рекомендуем командную строку Lauch, так как командная строка в фоновом режиме будет показывать потенциальные ошибки и печатные операторы LUA, что очень полезно при отладке.
Генератор нагрузки HTTP поддерживает подключение к Analyzer Power Daemons. Общая идея инфраструктуры состоит в том, чтобы подключиться к сетевому демонам, который может работать на отдельной машине с анализатором мощности. К сожалению, большинство демонов электроэнергии, таких как Spec Ptdaemon, имеют ограничительные лицензии, запрещающие их использование с помощью генератора нагрузки HTTP или предотвращать их предоставление их вам.
Мы предоставляем интерфейс iPowerCommunicator в инструментах . Реализуйте свой собственный коммуникатор Daim Daemon против этого интерфейса. Hiokicommunicator -это функционирующая справочная реализация, которая поддерживает Ethernet-способность Hioki Power Seasure Seasure. TMCTLDCommunicator может использоваться в качестве дополнительной реализации.
Чтобы запустить генератор нагрузки HTTP с вашим коммуникатором Power, добавьте его в ClassPath, а затем укажите полностью переговорившее имя класса вашего коммуникатора, используя переключатель -c генератора нагрузки HTTP в режиме директора. Используйте переключатель -p , чтобы указать сетевой адрес вашего демона питания. Вы можете ввести несколько разделившихся запятых адресов. Если вы это сделаете, директор будет создавать создание коммуникатора для каждого из этих адресов и регистрировать его результаты в отдельном столбце.
Пример (с коммуникатором Power, составленной в 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
Пример (с коммуникатором Power, составленной в отдельную банку):
$ 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 .Пожалуйста, Condider цитируя нас, если вы используете генератор нагрузки 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},
}