Длительные испытания на выдержку в метрах - PullRequest
1 голос
/ 06 ноября 2019

Испытания Jmeter выполняются в режиме «ведущий-ведомый» примерно на 8 ведомых машинах. Однако, если для режима удаленной пакетной обработки установлено значение MODE_STRIPPED_BATCH, я не могу выполнять тесты более 64 часов. Пропускная способность составляет около 450 запросов в минуту, и для каждого подчиненного компьютера это приводит к созданию файлов JTL, которые составляют около 1,5 ГБ. Все 8 ведомых отправят это ведущему (1,5 ГБ x 8), и, вероятно, ввод / вывод получит слишком много, чтобы мастер мог его обработать. Оперативная память главного компьютера составляет 16 ГБ оперативной памяти и имеет дисковое пространство около 250 ГБ. Мне было интересно, есть ли в распределенной архитектуре jmeter какие-либо условия, позволяющие проводить длительные тесты выдержки без каких-либо необъяснимых нагрузок на главную машину. Очевидно, у меня есть возможность отказаться от настройки главного подчиненного и перейти на 8 независимых узлов, однако в этом случае у меня возникнут сложности с обслуживанием файлов CSV с данными (которые в настоящее время я использую с помощью простого плагина сервера таблиц от главного m) итакже вокруг агрегирования файлов результатов. Любые предложения, пожалуйста. Было бы здорово иметь возможность проводить тесты как минимум в течение примерно 4 дней (96 часов или около того).

Ответы [ 2 ]

1 голос
/ 08 ноября 2019

Я бы посоветовал обратиться к независимой настройке JMeter для рабочих и внешнего сборщика данных.

На самом деле, возможности JMeter по стандартному распределенному масштабированию слабы, устарели и в целомдовольно смешноА также возможности сбора / агрегирования / обработки данных.

Эта ситуация меня действительно озадачивает - учтите, конкуренты еще хуже, так что в этой области буквально НИЧЕГО (за исключением, возможно, некоторых SaaS-решений)пытаюсь монетизировать этот пробел). Но это то, что это ...

Так что это примерно почему -s, теперь до как -s.

Если бы я был вами, Я бы:

  1. Контейнер JMeter работник

  2. Оборудовать каждый контейнер сторожевым таймером для быстрого перезапуска работника, если дела идут локально на юг (иливероятно, даже по графику, чтобы обновить его в конечном итоге). Будь то внутренний или внешний, как облачные сервисы, - не имеет значения.

  3. Настройка базы данных временных рядов - я рекомендую InfluxDB, это отличный продукт, и он бесплатный в базовой версии(этого будет достаточно для ваших целей).

  4. Перенесите результаты / показатели теста в эту БД - не собирайте их локально! Вы можете сделать это прямо из своих тестов с помощью довольно простого пользовательского прослушивателя (линейный протокол Influx смехотворно прост и быстр), или вы можете иметь внешний агент, наблюдающий за файлами результатов по мере их поступления. Я просто предлагаю вам не использовать так называемый Backend Listner для выполнения этой работы - это мусор, он не будет правильно формировать ваши данные, поэтому вам придется выполнить дополнительные операции, чтобы привести их в порядок.

  5. Если вы правильно сформируете свои результаты теста / метрики, вы уже синхронизируете их во времени в одном наборе - и дальнейшие опции обработки будут невероятно мощными!

1 голос
/ 06 ноября 2019

Я ожидаю, что вы ищете режим отправителя сэмплера StrippedAsynch.

Согласно документации :

Asynch

выборки временно сохраняются в локальной очереди. Отдельный рабочий поток отправляет образцы. Это позволяет продолжить тестовый поток, не дожидаясь отправки результата клиенту. Однако, если сэмплы создаются быстрее, чем они могут быть отправлены, очередь в конечном итоге заполнится, и поток сэмплера будет блокироваться до тех пор, пока некоторые сэмплы не будут удалены из очереди. Этот режим полезен для сглаживания пиков при генерации образца. Размер очереди можно настроить, установив свойство JMeter asynch.batch.queue.size (по умолчанию 100) на узле сервера.

StrippedAsynch

удалить responseData из успешных примеров,и используйте отправителя Async для их отправки.

Поэтому на подчиненном узле добавьте следующую строку в файл user.properties :

mode=StrippedAsynch

и на главномузел определяет asynch.batch.queue.size, чтобы быть настолько высоким, чтобы не влиять на пропускную способность JMeter (не замедлит его), и настолько низким, чтобы не перегружать мастер. Я бы начал с 1000.

Другой вариант использует StrippedDiskStore, но вам придется вручную собирать сериализованные результаты после завершения теста (убедитесь, что подчиненные процессы не будут закрыты, поскольку результаты будут удалены после завершения подчиненного процесса)

Вы можете использовать JMeter PerfMon Plugin для мониторинга использования памяти и сети на главном и подчиненном устройствах.

...