1/26/2015

JMeter: распределенное нагрузочное тестирование

     Часто в процессе нагрузочного тестирования тестировщик упирается в то, что ресурсы его компьютера и/или сетевого соединения не позволяют создать требуемую нагрузку на тестируемое приложение. Можно пойти по пути увеличения производительности нагрузочного клиента и сети, а можно использовать возможности по распределенному нагрузочному тестированию, которые JMeter предоставляет из коробки.
     Для проведения распределенного тестирования нам понадобятся:
  • 1 JMeter-клиент для управления тестовой сессией и сбора результатов тестирования
  • N JMeter-серверов (тестовых нод), на которых непосредственно будут выполнятся нагрузочные тесты
Следует отметить, что JMeter не предоставляет полноценной распределённости - каждая тестовая нода выполняет тестовый план полностью. 
     Приступим к разворачиванию и настройке окружения. На клиенте и на нодах необходимо обеспечить одинаковую конфигурацию JMeter - версии, плагины. Также следует помнить, что тест передается для выполнения на ноду и нужно обеспечить доступность всех тестовых данных на ноде: файлов, баз данных и прочих ресурсов. В случае использования плагина PerfMon обратите внимание на то, что если вы используете переменные для конфигурирования метрик, то при удалённом запуске они (почему-то) работать не будут. Как запускать ноды и клиенты описано ниже:
Если ваш клиент находится вне сети тестовых нод, то может понадобиться указать порт, через который будет идти обмен информацией между клиентом и нодами. Для этого в файле jmeter.properties нужно задать параметр client.rmi.localport и открыть этот порт для доступа на ваш клиент извне.
      Мы уже умеем запускать ноды и клиента. Остался маленький штрих - научиться запускать тесты на нодах. Для этого проводим предварительную настройку клиента: в файле jmeter.properties нужно задать параметр remote_hosts. Например: remote_hosts=192.168.1.6,192.168.1.8. Легко можно догадаться, что это адреса ваших тестовых нод. Перезапускаем клиент и вуаля - в меню Run можно выбрать запуск на удаленных нодах:
  
       В заключение хочется дать несколько рекомендаций по распределенному запуску тестов:
  •  Если вы хотите исключить влияние сетевых коллизий, то запускайте ноды в той же сети, что и тестируемый сервер.
  • Распределенное тестирование требует передачи большого объема данных, поэтому лучше всего будет собрать результаты тестирования просто в файл, а потом уже строить графики и проводить прочий анализ.
  • Не забывайте настраивать параметры JVM. В частности - размер кучи, параметр HEAP в файле jmeter. При большом числе потоков JMeter потребляет много памяти.
  • Тщательно продумывайте свои тестовые нагрузочные сценарии, если планируется их распределенный доступ, чтобы обеспечить их независимость от запущенных сценариев на других нодах. Например, обеспечить возможность чтения тестовых данных из определенного файла в зависимости от IP-адреса ноды.
Удачных экспериментов :)

Комментариев нет:

Отправить комментарий