Речь пойдёт о настройке и запуске распределённой сети JMeter для подачи нагрузки c нескольких серверов, которые будут управляться централизованно.

Клиент — компьютер, с которого управляем запуском и остановкой нагрузочных тестов на удалённых «Серверах».
Сервер — компьютер, на котором происходит запуск нагрузочных тестов.
Целевая система — система, которая подвергается нагрузочному тестированию.
%JM% — каталог установки JMeter.

Необходимо учесть, чтобы на «Клиент» и «Сервер» были установлены одинаковые версии Java, а также JMeter. Возможно установить разные версии, но совместную работу разных версий Java и JMeter не проверял.

НАСТРОЙКА

Настройка Сервера

Предварительно устанавливаем Java и JMeter.

1. В каталоге %JM%\bin правим файл user.properties:
— Добавить строку server.rmi.ssl.disable=true — отключаем SSL, чтобы не генерировать ключи.
— Добавить строку server.rmi.localport=4444 — указываем порт (любой), через который JMeter будет работать (полезно, если на файрволле открываем определённый порт для JMeter). Если не указать, то при старте Сервер выберет случайный порт.
2. В каталоге %JM%\bin правим файл jmeter-server (тот который без расширения):
— Расскоментировать строку #RMI_HOST_DEF=-Djava.rmi.server.hostname=xxx.xxx.xxx.xxx и указать IP Сервера, на котором вы проводите текущие настройки (пример: RMI_HOST_DEF=-Djava.rmi.server.hostname=192.168.56.110), полезно когда в системе несколько сетевых адаптеров и нужно выбрать конкретный. На этом IP будет доступен RMI сервер, для удалённого управления.

Настройка Клиента

Предварительно устанавливаем Java и JMeter.

1. В каталоге %JM%\bin правим файл user.properties:
— Добавить строку server.rmi.ssl.disable=true — отключаем SSL, чтобы не генерировать ключи.
2. В каталоге %JM%\bin правим файл jmeter.properties:
— В строке remote_hosts= указываем через запятую с пробелом IP-адреса Серверов, которыми мы будем управлять (пример: remote_hosts=127.0.0.1, 192.168.56.110).

ЗАПУСК ТЕСТОВ

Запуск Сервера

На Сервере запускаем JMeter выполнив сценарий %JM%\bin\jmeter-server.bat (в Windows).

В командной строке получим следующее:

Распределённая нагрузка с нескольких серверов JMeter

На Сервере JMeter запущен и ждёт команды с Клиента.

Запуск Клиента

На Клиенте запускаем JMeter выполнив сценарий %JM%\bin\jmeter.bat (в Windows).

Откроется графическая оболочка. Нам необходимо открыть или создать сценарий нагрузочного тестирования (он в дальнейшем автоматически будет передаваться на Сервера для выполнения).

Далее проследовав в пункт меню Run -> Remote Start мы увидим список Серверов, на которых мы можем запускать тесты:

Распределённая нагрузка с нескольких серверов JMeter

Можно запустить распределенную нагрузку с помощью пункта меню Run -> Remote Start All. Данный пункт позволяет запустить нагрузку с использованием всех имеющихся в списке серверов. Если требуется использовать только определенный сервер, следует выбрать пункт меню Run -> Remote Start -> [SERVER], где [SERVER] — адрес определённого сервера.

Если нагрузку запускали на определённом Сервере, то и останавливать её надо выбирая определённый сервер, через пункт меню Run -> Remote Stop -> [SERVER], так как в этом случае команда через пункт меню Run -> Remote Stop All может не отработать. Используем Run -> Remote Stop All если до этого нагрузку запускали через Run -> Remote Start All.

После запуска тестов на Сервере через Клиент мы увидим на Сервере в консоли:

Распределённая нагрузка с нескольких серверов JMeter

После остановки тестов на Сервере через Клиент мы увидим на Сервере в консоли:

Распределённая нагрузка с нескольких серверов JMeter

ОТОБРАЖЕНИЕ РЕЗУЛЬТАТОВ

JMeter на Клиенте собирает метрики со всех серверов. Чтобы это увидеть мы можем добавить, например, Listener -> View Results in Table.

Далее запускаем тест на любом Сервере и видим результаты выполнения тестов на определённом сервере, а также сколько виртуальных пользователей\потоков запущено всего:

Распределённая нагрузка с нескольких серверов JMeter

ПОЛЕЗНО ЗНАТЬ

— Управляя Серверами можно одновременно запускать тест как на локальном сервере, так и на удалённом Сервере, но не перегружайте систему, где установлен Клиент.
— Если в скриптах есть использование определённых файлов и каталогов, то выносите их в сетевые каталоги, чтобы они были доступны со всех Серверов и с Клиента.

Вводная статья с официального сайта http://jmeter.apache.org/usermanual/remote-test.html