2016-06-21 7 views
0

В настоящее время я разрабатываю сценарии loadrunner для тестирования производительности приложения, которое обрабатывается в асинхронном режиме. Приложение, которое я выполняю при тестировании производительности, принимает входные файлы через SFTP и отправляет обработанный вывод на выходное местоположение через SFTP.Перекрестные ссылки Vuser в Loadrunner

Чтобы создать скрипт для измерения производительности приложения, я планирую использовать два скрипта Vugen, один для отправки входного файла, а второй для получения выходного файла. Чтобы измерить продолжительность времени между входом и выходом, я хотел выполнить транзакцию Cross Vugen Transaction.

Я просмотрел документацию в руководстве пользователя, но это слишком мало для меня, чтобы понять и реализовать. Не могли бы вы предоставить образец сценария или более подробные инструкции о том, как реализовать, выполнить и просмотреть транзакции Cross Vugen.

Обратите внимание, что я новичок в сценариях vugen, и любая помощь в этом отношении будет высоко оценена.

ответ

0

Вам нужно будет вручную обработать, как соотнести, какие начальные транзакции выровнять, с какой завершающей транзакцией. Loadrunner этого не делает.

Одним из способов может быть вставка идентификаторов транзакций и их дата/время начала в таблицу VTS в первом скрипте. Затем второй скрипт, считывающий из этой же таблицы, находит соответствующий идентификатор транзакции, затем используя lr_user_data_point() для регистрации пользовательского времени транзакции.

В качестве альтернативы, если есть какой-то способ получить начальное время после факта, например, прочитать «значение времени создания» в вашем выходном файле, чтобы получить время начала, вы можете рассчитать разницу во времени в своем втором скрипте и используйте lr_custom_data_point().

Если все остальное не удается, проще всего просто сохранить все в два файла журнала и рассчитать разницу во времени вручную позже.

0

Существует функция lr_start | end_distributed_transaction(), которая предназначена для обработки этой ситуации напрямую. Однако, если вы сделаете некоторое исследование как для группы LoadRunner Yahoo, так и для группы go-loadrunner lr-LoadRunner, вы обнаружите, что эта функция несовместима в ее работе. Существует несколько альтернативных путей

Как отметил Майкл Галос, вы можете размещать информацию о брокере между сценариями, используя VTS, RabbitMQ, Amazon Simple Queue Service, таблицу очередей в традиционной базе данных, ..., затем второй пользователь может получить информацию о времени начала (в идеале в миллисекундах времени unix), вычислить разницу с текущим временем, а затем использовать функцию lr_set_transaction() для создания транзакции «на лету». У этой модели есть некоторые проблемы, поскольку она предполагает максимальную глубину очереди при переходе от одного виртуального пользователя к другому из 1 без задержки и предполагает, что следующий элемент, который выскочил из очереди, будет правильным элементом, что не всегда верно в асинхронная модель.

Вы также можете использовать то, что будет обозначать данные маркировки в записи, которую вы обрабатываете. Например, если ваша запись позволяет использовать числа вместо среднего имени, в качестве примера рассмотрим использование временной метки unix в качестве среднего имени. Затем, как только вы потянете свою запись, у вас есть копия исходного времени, когда она была помещена в очередь раньше. Это также позволяет избежать интеграции дополнительной инфраструктуры. Поскольку время начала в составе исходной записи и время окончания является частью ваших локальных виртуальных пользователей, вы можете снова использовать lr_set_transaction() для создания транзакции «на лету».

Оптимальной ситуацией является база данных заднего конца, которая отслеживает время, необходимое для обработки запроса асинхронного запроса. Предположим, что запись, после ее поступления, требует нескольких этапов обработки.Контрольный след, который отслеживает время прибытия на разных этапах, может быть использован для создания набора данных в конце теста, который затем может быть перенесен в Analysis как часть вашей тестовой отчетности. Это может обеспечить не только оптимальное время обработки, так как вы увидите перспективу времени от прибытия в одну очередь до места размещения в исходящей очереди для получения (без задержек с клиентской обработкой или сетью). Такие контрольные журналы также помогают в отладке продукции, когда элемент «застревает». В качестве альтернативы вы также можете обрабатывать журналы, где эта информация может быть собрана. Мне нравится использовать Splunk для этого процесса, но другие идут на стек ELK или даже с Microsoft Logparser. Запрос, экспортированный в datapoints (контрольный журнал базы данных, Splunk, ELK или LogParser), которые взяты в анализе, становится самым изящным решением для анализа и представления.

Вот ваш слабый момент во всем этом. Системные часы. Убедитесь, что все ваши системные часы синхронизированы на всех ваших генераторах и хостах виртуальной пользовательской нагрузки, из которых вы будете извлекать данные синхронизации. Если вы находитесь в среде виртуальной машины, это становится проблематичным, потому что виртуальные машины будут использовать виртуализированные системные часы, которые в конечном итоге должны синхронизироваться с физическими системными часами. Это может привести к скачку часов, в результате чего получается более длинная запись по времени, чем в среде аппаратных часов. Сеть заключается в том, что вы будете иметь более высокое среднее значение, максимальное, стандартное отклонение и время ответа 90-го/95-го процентиля. Вы можете покрыть эту непредвиденную ситуацию, имея пару генераторов аппаратной нагрузки в цикле в качестве элементов управления, а затем используя записи синхронизации для этого набора в качестве контроля против любого перекоса в ваших виртуализированных генераторах нагрузки. Пища для размышлений.

Смежные вопросы