- Apache Jmeter установка на Ubuntu (тестирование нагрузки)
- jmeter GUI
- Установка и запуск JMeter на Linux CentOS
- Подготовка системы
- Установка JMeter
- Автозапуск
- Настройка клиента
- Графическая оболочка
- Как установить Apache JMeter в Ubuntu 20.04 LTS
- Как установить Apache JMeter в Ubuntu 20.04 LTS
- Установите Apache JMeter на Ubuntu 20.04 LTS Focal Fossa
- Шаг 1. Во-первых, убедитесь, что все ваши системные пакеты обновлены, выполнив следующие apt команды в терминале.
- Шаг 2. Установка Java.
- Шаг 3. Установка Apache JMeter в Ubuntu 20.04.
- Приручаем JMeter
- Установка
- Запись скрипта
- Переменные
- Отладка
- JDBC Request
- Регулярные выражения
- Что-то там внутри
- Запуск
Apache Jmeter установка на Ubuntu (тестирование нагрузки)
Пакет является Java приложением, поэтому прежде всего потребуется поставить Java.
Базовый набор утилит jre (Java Runtime Enviroment)
И более полный набор JDK (Java Development Kit)
Проверить есть ли в системе Java можно запросив версию
openjdk version «10.0.2» 2018-07-17
OpenJDK Runtime Environment (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.4)
OpenJDK Server VM (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.4, mixed mode)
Затем можно переходить к установке. Скачиваем свежую версию с официального сайта сохраняя архив в /tmp
cd /tmp/ && wget https://www-eu.apache.org/dist//jmeter/binaries/apache-jmeter-5.0.tgz
Каталог /tmp очищается при перезагрузке, поэтому сам jmeter будет размещаться в специально созданной директории в /opt
Теперь можно переместить архив
И распаковать его
cd /opt/jmeter/ && tar xvf apache-jmeter-5.0.tgz
Среди бинарных файлов можно увидеть скрипты, которыми пакет запускается в режиме клиента и в режиме сервера
jmeter GUI
В графическом интерфейсе запустить jmeter можно так:
В консоль при этом будет выведено предупреждение о том, что GUI для нагрузочного тестирования использовать нельзя. Также приводится синтаксис запуска в консоли
Фактически команда может выглядеть так
jmeter -n -t testPlan.jmx — l log.jtl -H 127.0.0.1 -P 8000
Тем не менее, для знакомства с программой и отправки небольшого количества запросов вполне подходит GUI.
Источник
Установка и запуск JMeter на Linux CentOS
Данная инструкция показывает только установку на Linux CentOS и настройку в качестве сервиса инструмент для тестирования JMeter.
Подготовка системы
Предварительно, необходимо установить openjdk и wget. Для этого вводим:
yum install java-11-openjdk wget
Смотрим версию openjdk:
Мы должны увидеть что-то на подобие:
openjdk version «11.0.12» 2021-07-20 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.12+7-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.12+7-LTS, mixed mode, sharing)
Установка JMeter
Установку необходимо выполнить как на сервере, так и на всех клиентах.
Переходим на официальную страницу загрузки JMeter. Нам нужен архив tgz с бинарным файлом. Находим его и копируем ссылку:
Используя скопированную ссылку, загружаем на сервер архив:
tar zxvf apache-jmeter-5.4.1.tgz
И переносим распакованный архив в каталог /opt/jmeter:
mv apache-jmeter-*/ /opt/jmeter
Создаем файл для настройки переменных окружения:
export JMETER_HOME=/opt/jmeter
export PATH=$JMETER_HOME/bin:$PATH
* в данном примере мы создаем переменную JMETER_HOME с путем до нашего каталога и добавляем ее значение к переменной PATH, которая используется для поиска системой файлов запуска.
Запускаем на выполнения файл, чтобы создать в текущей сессии нужные нам переменные окружения:
Мы должны увидеть версию нашего jmeter:
_ __ __ _____ _____ _____ ____
| | \/ | ____|_ _| ____| _ \
_ | | |\/| | _| | | | _| | |_) |
| |_| | | | | |___ | | | |___| _ Dmosk
What is the name of your organizational unit?
[Unknown]: DmoskOU
What is the name of your organization?
[Unknown]: Dmosk
What is the name of your City or Locality?
[Unknown]: SPb
What is the name of your State or Province?
[Unknown]: SPb
What is the two-letter country code for this unit?
[Unknown]: RU
Is CN=Dmosk, OU=DmoskOU, O=Dmosk, L=SPb, ST=SPb, C=RU correct?
[no]: yes
В итоге, мы увидим:
Copy the generated rmi_keystore.jks to jmeter/bin folder or reference it in property ‘server.rmi.ssl.keystore.file’
Пробуем запустить сервис командой:
Мы должны увидеть что-то на подобие:
Created remote object: UnicastServerRef2 [liveRef: [endpoint:[10.129.0.12:41899,SSLRMIServerSocketFactory(host=bigdata-mon.ru-central1.internal/10.129.0.12, keyStoreLocation=rmi_keystore.jks, type=JKS, trustStoreLocation=rmi_keystore.jks, type=JKS, alias=rmi),SSLRMIClientSocketFactory(keyStoreLocation=rmi_keystore.jks, type=JKS, trustStoreLocation=rmi_keystore.jks, type=JKS, alias=rmi)](local),objID:[-795e2f04:17b5896bf72:-7fff, -516441775273034593]]]
Наш сервер запускается.
Прерываем его работу комбинацией Ctrl + R и продолжаем настройку.
Автозапуск
Теперь создадим юнит в systemd:
[Unit]
Description=Apache Jmeter server
Documentation=https://jmeter.apache.org/usermanual/remote-test.html
Wants=network-online.target
After=network-online.target
[Service]
LimitNOFILE=10240
Type=simple
Restart=on-failure
RestartSec=180s
WorkingDirectory=/tmp
ExecStart=/opt/jmeter/bin/jmeter-server
* в данном примере мы будем запускать приложение /opt/jmeter/bin/jmeter-server.
Перечитываем конфигурацию в systemd:
Разрешаем автозапуск jmeter-server и стартуем его:
systemctl enable jmeter-server —now
Проверяем статус запущенного сервиса:
systemctl status jmeter-server
Переходим к клиенту.
Настройка клиента
На клиентском компьютере открываем файл:
* где 192.168.0.15 — адрес нашего сервера с jmeter.
Пример запуска тестирования будет выглядеть так:
jmeter -t /tmp/my_test_file.jmx -n -r -X -f -l jmetter.jtl
* где /tmp/my_test_file.jmx — путь до файла с тестами (разработка данного файла не входит в тему данной инструкции).
Графическая оболочка
Настройка jmetter может выполняться с помощью графического интерфейса. Если мы подключены к серверу без графической оболочки по SSH, то нам нужно настроить проброс X11 на рабочий компьютер, с которого мы подключаемся по SSH.
Устанавливаем на сервере пакеты:
yum install xauth xterm
Открываем конфигурационный файл:
И проверяем, что опция X11Forwarding разрешена:
Если данную опцию пришлось изменить, то перезапускаем sshd:
systemctl restart sshd
Теперь мы можем подключиться к нашему серверу по SSH
ssh -X -p 22 root@192.168.0.15
Теперь можно запустить jmetter:
На компьютере, с которого мы подключены по SSH должно открыться окно с настройкой jmetter.
Источник
Как установить Apache JMeter в Ubuntu 20.04 LTS
Как установить Apache JMeter в Ubuntu 20.04 LTS
В этом руководстве мы покажем вам, как установить Apache JMeter в Ubuntu 20.04 LTS. Для тех из вас, кто не знал, приложение Apache JMeter — это программное обеспечение с открытым исходным кодом, приложение на 100% чистой Java, разработанное для нагрузочного тестирования функционального поведения и измерения производительности. Первоначально он был разработан для тестирования веб-приложений, но с тех пор расширился до других функций тестирования.
В этой статье предполагается, что у вас есть хотя бы базовые знания Linux, вы знаете, как использовать оболочку, и, что наиболее важно, вы размещаете свой сайт на собственном VPS. Установка довольно проста и предполагает, что вы работаете с учетной записью root, в противном случае вам может потребоваться добавить ‘ sudo ‘ к командам для получения привилегий root. Я покажу вам пошаговую установку Apache JMeter на Ubuntu 20.04 (Focal Fossa). Вы можете следовать тем же инструкциям для Ubuntu 18.04, 16.04 и любого другого дистрибутива на основе Debian, например Linux Mint.
Установите Apache JMeter на Ubuntu 20.04 LTS Focal Fossa
Шаг 1. Во-первых, убедитесь, что все ваши системные пакеты обновлены, выполнив следующие apt команды в терминале.
Шаг 2. Установка Java.
Добавьте PPA «Linux Uprising» с помощью следующей команды:
После добавления репозитория приступайте к установке Java в Ubuntu Linux:
Затем введите ниже, чтобы подтвердить версию Java:
Шаг 3. Установка Apache JMeter в Ubuntu 20.04.
Теперь мы загружаем последнюю версию Apache JMeter, используя следующую команду:
Затем распакуйте архив JMeter в корневой каталог документов на вашем сервере:
После извлечения загруженного пакета перейдите в извлеченную папку, а затем перейдите в каталог bin внутри извлеченной папки:
Затем запустите файл jmeter.sh с помощью команды. На экране появится графический интерфейс Jmeter: sh jemeter . sh
Поздравляю! Вы успешно установили Apache JMeter . Благодарим за использование этого руководства по установке Apache JMeter в системе Ubuntu 20.04 LTS Focal Fossa. Для получения дополнительной помощи или полезной информации мы рекомендуем вам посетить официальный сайт Apache JMeter .
Источник
Приручаем JMeter
Сегодня я хочу рассказать о замечательном инструменте, название которого вынесено в заголовок статьи. Разумеется, моей целью не является написание подробного руководства по Apache JMeter. В своей статье я хочу лишь зафиксировать ряд, на мой взгляд, не очевидных моментов, с которыми мне пришлось столкнуться в своей повседневной работе. Я надеюсь, что моя статья будет полезна (сразу предупреждаю, картинок будет много).
Конечно, я не первый, кто пишет про JMeter на Хабре, но практически во всех предыдущих статьях, акцент делается на нагрузочное тестирование. Хотя это и основное применение JMeter, но только им его возможности не ограничиваются. Давайте, просто посмотрим, по каким протоколам может работать этот продукт:
- Web — HTTP, HTTPS
- SOAP / REST
- FTP
- Database via JDBC
- LDAP
- Message-oriented middleware (MOM) via JMS
- Mail — SMTP(S), POP3(S) and IMAP(S)
- MongoDB (NoSQL)
- Native commands or shell scripts
- TCP
Таким образом, если перед вами стоит какая-то задача автоматизации и всё, что вам требуется, перечислено в этом списке, определённо стоит подумать об использовании JMeter, перед тем как с головой погрузиться в программирование на любимом Perl, Python или Java. Возможно, такой подход позволит сэкономить очень много времени.
Установка
С этим всё просто:
- Устанавливаем Java (если она еще не установлена)
- Выкачиваем и распаковываем свежую сборку JMeter
- Устанавливаем переменную среды JMETER_BIN на каталог с исполняемыми файлами JMeter (только для Windows)
- Запускаем jmeter.bat или jmeter.sh (в зависимости от операционной системы) из каталога bin
Единственная проблема, с которой я столкнулся на Windows, связана с тем, что значение переменной JMETER_BIN должно завершаться символом прямого или обратного слэша. Подробности можно посмотреть в запускаемом скрипте. Чтение инструкции также не будет лишним.
Запись скрипта
Это, пожалуй, самая эффектная возможность JMeter. Она уже описывалась ранее, но я повторюсь, поскольку в той статье речь шла об уже немного устаревшей версии. JMeter можно запустить в режиме proxy, таким образом, чтобы весь HTTP-трафик проходил через него. Все подробности взаимодействия будут автоматически записываться в выбранную Thread Group или Recording Controller. Для добавления новых узлов в дерево, просто нажимаем на правую кнопку мыши и выбираем требуемый тип из выпадающего меню:
Thread Group, управляющая такими настройками как количество потоков, используемых для тестирования и количество запросов в тесте, находится в категории Treads (Users), а сам HTTP(S) Test Script Recorder в Non-Test Elements.
Я выделил на рисунке настройки, на которые следует обратить внимание. Порт возможно придётся изменить, если на 8080 уже что-то поднято. В сложных случаях, в Test Plan придётся добавить HTTP Cookie Manager и HTTP Authorization Manager. После нажатия кнопки Start, идём в настройки любимого браузера:
Взаимодействие с Яндекс, внезапно, оказывается очень непростым:
Полученные запросы (HTTP Request) вместе с их настройками (HTTP Header Manager) можно перенести в любое место скрипта, используя любимые всеми команды Copy&Paste (Drag&Drop тоже работает). Даже если вы твердо уверены в том, что происходит на вашем сайте, Script Recorder может быть очень полезен, для того чтобы узнать подробности. Кроме того, автоматическая генерация скриптов куда веселее чем вбивание их руками. Более подробно процесс записи скриптов описан в этой инструкции.
Переменные
Для чего-то мало-мальски серьёзного, нам потребуется возможность параметризации. Для примера, предположим, что нам требуется задать таймауты, в течение которых JMeter будет ожидать ответа сервера. Вбивать их заново в каждый HTTP Request, при любом изменении, было бы слишком утомительно. Заодно определим настройки HTTP Proxy (если он используется):
В поле Password забито значение $ , тут уж вам придётся поверить мне на слово. Сами настройки удобно держать в User Defined Variables (этот элемент можно найти в категории Config Element):
Пустые значения переменных проблемой не являются. В соответствующие настройки будут подставлены пустые строки, как того и требуется, в случае если HTTP Proxy не используется. Можно пойти ещё дальше и действительно разместить все HTTP-настройки в одном месте:
Элемент HTTP Request Defaults, также как и User Defined Variables расположен в категории Config Element.
Отладка
Теперь, было бы неплохо видеть, что происходит при выполнении сценария. Различного вида визуализаторы размещаются в категории Listener. Нам понадобится View Results Tree. Добавим его и запустим сценарий на выполнение командой Run/Start (Ctrl+R). Можно видеть, что ответ сервера также бывает непростым:
Такая картина наблюдается, если адрес редиректит нас на другую страницу и с этим может быть связана одна проблема. Если мы попытаемся анализировать ответ сервера (как это делать я покажу ниже), нам будет доступен лишь последний ответ (той страницы на которую произошёл redirect). Если ответ с предыдущей страницы нам также интересен, автоматический redirect придётся отключить. За это отвечает настройка Follow Redirects элемента HTTP Request. Разобрав ответ, мы сможем получить адрес целевой страницы и выполнить повторный запрос вручную.
Есть ещё один элемент, крайне полезный для отладки сценариев. Он находится в категории Sampler и называется Debug Sampler. Каждый раз, когда до него доходит управление, он выводит текущие значения всех переменных. Добавим его в Thread Group и запустим сценарий ещё раз (для того, чтобы очистить вывод предыдущего запуска, удобно использовать комбинацию клавиш Ctrl+E):
Все переменные как на ладони. Удобно.
JDBC Request
Этот Sampler открывает нам доступ в любую базу данных, поддерживающую протокол JDBC. Для начала, добавим в Test Plan конфигурационный элемент с настройками подключения к серверу БД (JDBC Connection Configuration):
Помимо собственно настроек подключения к БД, здесь важно заполнить поле Variable Name. Это имя будет использоваться в JDBC Request (Sampler) для доступа к пулу сессий:
Если вам интересны результаты select-а, придётся заполнить Variable Names. Сам JMeter парсить SQL-запросы на предмет имён столбцов не умеет. Можно перечислять имена столбцов через запятую и пропускать столбцы, не давая им имени. Вставляем Debug Sampler и смотрим, что получилось:
Видим, что документация не врёт. Появились переменные urls_1 и urls_2 (количество строк, как и обещали, в urls_#). В этом месте, стоит соблюдать осторожность. Записи выбираются не по одной, а все сразу и прочитав >1000 строк можно легко отожрать слишком много памяти. Теперь, было бы неплохо обойти полученные адреса в цикле:
Да, именно вот так заковыристо. Набор переменных urls перебираем от 0 до $ и текущее значение помещаем в url. Сам ForEach Controller можно найти в категории Logic Controller. Внутри него создадим параметризованный HTTP Request. Запускаем, смотрим:
Регулярные выражения
Теперь, результаты обращений к Web-серверам хотелось бы проанализировать. Для этого, нам предоставлена вся мощь регулярных выражений. Regular Expression Extractor можно найти в Post Processors. Добавим его в HTTP Request и сконфигурируем:
Здесь, нас интересует только код ответа по HTTP (но, по иллюстрации видно, что можно обрабатывать и содержимое ответа). Будем извлекать цепочку цифр (Regular Expression) и помещать результат применения шаблона (Template) в переменную http_result (Reference Name):
Как и ожидалось, получаем 200. Заодно, можно видеть, каким образом осуществляется захват в переменные регулярным выражением.
Что-то там внутри
Теперь, допустим, что нас интересует время, в течение которого выполнялся HTTP-запрос. И интересует оно нас не просто для статистики, а мы его хотим как-то использовать в сценарии (например сложить в БД). С этой задачей поможет справиться BeanShell. Конкретно, мы используем его Pre — и PostProcessor-ы.
В первом будем получать timestamp:
А во втором, получать с его помощью временную задержку:
В общем, это тоже работает:
Но здесь следует сделать важное замечание. Поскольку, в настоящий момент, я занимаюсь не нагрузочным тестированием, производительность этой конструкции для меня не очень важна. Если в вашем случае это не так, стоит ознакомиться со следующей статьёй.
Запуск
Если бы не было этой возможности, не стоило бы и весь этот разговор заводить. В случае нагрузочного тестирования, сценарий можно запускать из GUI, нет проблем. Но если нас интересует автоматизация, необходимо уметь запускать его молча (например по cron-у). Разумеется такая возможность тоже есть:
Сохраняем сценарий в файл с расширением jmx (внутри это XML) и запускаем эту команду. Сценарий отрабатывает без запуска GUI и заодно пишет результаты своей работы в лог. Всё просто и удобно.
Источник