Часто в процессе нагрузочного тестирования тестировщик упирается в то, что ресурсы его компьютера и/или сетевого соединения не позволяют создать требуемую нагрузку на тестируемое приложение. Можно пойти по пути увеличения производительности нагрузочного клиента и сети, а можно использовать возможности по распределенному нагрузочному тестированию, которые 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 можно выбрать запуск на удаленных нодах:
Мы уже умеем запускать ноды и клиента. Остался маленький штрих - научиться запускать тесты на нодах. Для этого проводим предварительную настройку клиента: в файле jmeter.properties нужно задать параметр remote_hosts. Например: remote_hosts=192.168.1.6,192.168.1.8. Легко можно догадаться, что это адреса ваших тестовых нод. Перезапускаем клиент и вуаля - в меню Run можно выбрать запуск на удаленных нодах:
В заключение хочется дать несколько рекомендаций по распределенному запуску тестов:
- Если вы хотите исключить влияние сетевых коллизий, то запускайте ноды в той же сети, что и тестируемый сервер.
- Распределенное тестирование требует передачи большого объема данных, поэтому лучше всего будет собрать результаты тестирования просто в файл, а потом уже строить графики и проводить прочий анализ.
- Не забывайте настраивать параметры JVM. В частности - размер кучи, параметр HEAP в файле jmeter. При большом числе потоков JMeter потребляет много памяти.
- Тщательно продумывайте свои тестовые нагрузочные сценарии, если планируется их распределенный доступ, чтобы обеспечить их независимость от запущенных сценариев на других нодах. Например, обеспечить возможность чтения тестовых данных из определенного файла в зависимости от IP-адреса ноды.
Комментариев нет:
Отправить комментарий