Доступ к журналу воспроизведения для нагрузочного тестирования? Подводные камни и конкуренты Jmeter - PullRequest
13 голосов
/ 16 февраля 2011

Context

Мы хотим использовать логи доступа к веб-серверу для воспроизведения нагрузочных тестов. JMeter пришел мне на ум, когда я недавно читал в блоге сообщения об использовании jmeter в облаке (например, запуск нескольких экземпляров Amazon EC2 для генерации нагрузки)

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

Пробоотборник журнала доступа

  • ДЕЛАЕТ:

    • воссоздать сеансы, то есть обработать токен jsessionId (хотя он пытается приблизить сеансы по IP-адресу);
  • НЕ:

    • обрабатывать данные POST (даже если вы можете настроить apache / tomcat для записи данных записи в журнал доступа, сэмплер журнала доступа jmeter обрабатывает только «общий» формат журнала).

Публикация данных будет иметь большое значение для воссоздания фактической нагрузки.

Кроме того, в документации описан Access Log Sampler как «альфа-код», хотя ему уже 8 лет. Кажется, это не поддерживается активно. (Это дольше, чем бета-версия Gmail.)

HttpPerf

Еще одно сообщение в блоге указало мне на инструмент httpperf. Я начал читать об этом:

Резюме

  • Каков наилучший способ создания сценариев нагрузочного тестирования из реальных пользовательских данных?
  • Что сработало для вас лучше всего?
  • Плюсы и минусы различных инструментов?

Ответы [ 3 ]

1 голос
/ 23 марта 2011

JMeter + HTTP Raw Request + Raw Data Source для меня хорошо работает

0 голосов
/ 07 марта 2017

Вы можете легко воспроизвести журналы доступа с данными POST , используя ZebraTester .Он имеет много плагинов, похожих на JMeter, а также возможность добавлять встроенные сценарии, используя которые вы можете легко ориентировать полезную нагрузку POST, URL-адреса, временные метки и т. Д. Из журналов доступа.Вы можете запускать нагрузочные тесты непосредственно из инструмента локально или копировать записанный сценарий на SaaS-портал , чтобы запускать огромные миллионы виртуальных пользовательских нагрузочных тестов

0 голосов
/ 25 февраля 2014

Я опишу, как мы решаем эту проблему, используя наш собственный инструмент LT под названием Yandex Tank Он может обрабатывать простой файл access.log, но только запросы «GET».Когда есть необходимость делать другие типы запросов, мы используем другие форматы боеприпасов (боеприпасы - это файл, содержащий все запросы, которые мы будем отправлять на наш сервер).Пример:

342
POST / HTTP/1.1^M
Host: xxx.xxx.xxx.xxx:8080^M
Connection: keep-alive^M
Keep-Alive: 300^M
Content-Type: multipart/form-data; boundary=AGHTUNG^M
Content-Length: 1400^M
Connection: Close^M
^M
--AGHTUNG^M
Content-Disposition: form-data; name="fp"; filename="fp_tank"^M
Content-Type: application/octet-stream^M
Content-Transfer-Encoding: binary^M
...
--AGHTUNG--^M

Число ('342') в первой строке соответствует размеру следующего запроса.Запрос в необработанном формате.Вы можете написать простой скрипт на вашем любимом языке, который генерирует такие файлы боеприпасов из вашего access.log, а затем использовать его для нагрузочного тестирования.

Такой формат боеприпасов делает его действительно гибким.Например, этот код генерирует боеприпасы из журналов FCGI (тела POST кодируются в Base64).Но, с другой стороны, вам нужно будет обрабатывать сессии вручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...