Как использовать Apache JMeter для выполнения нагрузочного тестирования на веб-сервере

  1. Вступление В этом руководстве мы рассмотрим, как использовать Apache JMeter для выполнения базовых...
  2. Установите JMeter
  3. Создание базового плана тестирования
  4. Добавить группу тем
  5. Добавить HTTP-запрос по умолчанию
  6. Добавить HTTP Cookie Manager
  7. Добавить сэмплер HTTP-запроса
  8. Добавить результаты просмотра в Table Listener
  9. Запустите базовый план тестирования
  10. Интерпретация результатов
  11. Увеличение нагрузки
  12. Заключение

Вступление

В этом руководстве мы рассмотрим, как использовать Apache JMeter для выполнения базовых нагрузочных и стресс-тестов в среде вашего веб-приложения. Мы покажем вам, как использовать графический интерфейс пользователя для создания плана тестирования и запуска тестов на веб-сервере.

JMeter - это настольное Java-приложение с открытым исходным кодом, предназначенное для загрузки и тестирования производительности. Его можно использовать для имитации загрузки различных сценариев и вывода данных о производительности несколькими способами, включая файлы CSV и XML, а также графики. Поскольку это 100% Java, он доступен на каждой ОС, которая поддерживает Java 6 или более позднюю версию.

Предпосылки

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

Вы можете адаптировать тесты в этом руководстве к любому из ваших собственных веб-приложений. В качестве примера веб-сервера, который мы тестируем, является 1 ЦП / 512 МБ VPS с WordPress в стеке LEMP в центре обработки данных DigitalOcean в Нью-Йорке. Компьютер JMeter работает в офисе DigitalOcean в Нью-Йорке (что связано с задержкой наших тестов).

Обратите внимание, что результаты теста JMeter могут быть искажены различными факторами, включая системные ресурсы (ЦП и ОЗУ), доступные для JMeter, и сеть между JMeter и тестируемым веб-сервером. Размер нагрузки, которую JMeter может генерировать без искажения результатов, можно увеличить, запустив тесты в неграфическом режиме или распределив распределение нагрузки на несколько серверов JMeter.

Установите JMeter

Поскольку мы используем Apache JMeter в качестве настольного приложения и существует большое разнообразие используемых настольных ОС, мы не будем рассматривать шаги установки JMeter для какой-либо конкретной ОС. При этом, JMeter очень прост в установке. Самыми простыми способами установки являются использование менеджера пакетов (например, apt-get или Homebrew), загрузка и разархивирование двоичных файлов JMeter с официального сайта и установка Java (версия 6 или более поздняя).

Вот список программного обеспечения со ссылками на архивы, необходимые для запуска JMeter:

В зависимости от того, как вы устанавливаете Java, вам может понадобиться добавить каталог Java bin в переменную среды PATH, чтобы JMeter мог найти двоичные файлы Java и keytool.

Также мы будем ссылаться на путь, в который вы установили JMeter (каталог, в котором вы его разархивировали), как $ JMETER_HOME. Поэтому, если вы работаете в ОС Linux или Unix, бинарный файл JMeter находится по адресу $ JMETER_HOME / bin / jmeter. Если вы работаете в Windows, вы можете запустить $ JMETER_HOME / bin / jmeter.bat.

Для справки, при написании данного руководства мы использовали следующие версии программного обеспечения:

  • Oracle Java 7, обновление 60, 64-разрядная версия
  • JMeter 2.11

После того, как вы установили и запустили JMeter, давайте перейдем к созданию плана тестирования!

Создание базового плана тестирования

После запуска JMeter вы должны увидеть графический интерфейс пользователя с пустым планом тестирования :

План тестирования состоит из последовательности компонентов тестирования, которые определяют, как будет симулироваться нагрузочный тест. Мы объясним, как некоторые из этих компонентов могут использоваться, когда мы добавим их в наш план тестирования.

Добавить группу тем

Сначала добавьте группу потоков в план тестирования :

  1. Щелкните правой кнопкой мыши на плане тестирования
  2. Наведите курсор мыши на Добавить>
  3. Наведите курсор мыши на темы (пользователи)>
  4. Нажмите на группу тем

Группа нитей имеет три особенно важных свойства, влияющих на нагрузочное испытание:

  • Количество потоков (пользователей) : количество пользователей, которые JMeter попытается смоделировать. Установите это на 50
  • Период разгона (в секундах) : продолжительность времени, в течение которого JMeter будет распределять начало потоков. Установите это к 10 .
  • Количество циклов : количество раз, чтобы выполнить тест. Оставьте этот набор равным 1 .

Оставьте этот набор равным 1

Добавить HTTP-запрос по умолчанию

Элемент конфигурации по умолчанию для HTTP-запросов используется для установки значений по умолчанию для HTTP-запросов в нашем плане тестирования. Это особенно полезно, если мы хотим отправить несколько HTTP-запросов на один и тот же сервер в рамках нашего теста. Теперь давайте добавим HTTP-запрос по умолчанию в группу потоков :

  1. Выберите группу потоков , затем щелкните ее правой кнопкой мыши.
  2. Наведите курсор мыши на Добавить>
  3. Наведите курсор мыши на элемент конфигурации>
  4. Нажмите на HTTP-запрос по умолчанию

В разделе «Параметры HTTP-запроса по умолчанию» в разделе «Веб-сервер» заполните поле «Имя или IP-адрес сервера» именем или IP-адресом веб-сервера, который вы хотите проверить. Установка сервера здесь делает его сервером по умолчанию для остальных элементов в этой группе потоков.

Добавить HTTP Cookie Manager

Если ваш веб-сервер использует файлы cookie, вы можете добавить поддержку файлов cookie, добавив HTTP Cookie Manager в группу потоков:

  1. Выберите группу потоков , затем щелкните ее правой кнопкой мыши.
  2. Наведите курсор мыши на Добавить>
  3. Наведите курсор мыши на элемент конфигурации>
  4. Нажмите на HTTP Cookie Manager

Добавить сэмплер HTTP-запроса

Теперь вам нужно добавить сэмплер HTTP-запроса в группу потоков , который представляет запрос страницы, к которому каждый поток (пользователь) будет иметь доступ:

  1. Выберите группу потоков , затем щелкните ее правой кнопкой мыши.
  2. Наведите курсор мыши на Добавить>
  3. Мышь над сэмплером>
  4. Нажмите на запрос HTTP

В разделе «HTTP-запрос» в разделе «HTTP-запрос» заполните путь элементом, который вы хотите, чтобы каждый поток (пользователь) запрашивал. Мы установим это в /, чтобы каждый поток получал доступ к домашней странице нашего сервера. Обратите внимание, что вам не нужно указывать сервер в этом элементе, поскольку он уже был указан в элементе HTTP-запроса по умолчанию.

Примечание. Если вы хотите добавить дополнительные HTTP-запросы в качестве части теста, повторите этот шаг. Каждый поток выполнит все запросы в этом плане тестирования.

Добавить результаты просмотра в Table Listener

В JMeter слушатели используются для вывода результатов нагрузочного теста. Доступно множество слушателей, а других слушателей можно добавить, установив плагины. Мы будем использовать таблицу, потому что ее легко читать.

  1. Выберите группу потоков , затем щелкните ее правой кнопкой мыши.
  2. Наведите курсор мыши на Добавить>
  3. Наведите курсор мыши на слушателя>
  4. Нажмите на Просмотр результатов в таблице

Вы также можете ввести значение для Имя файла, чтобы вывести результаты в файл CSV.

Запустите базовый план тестирования

Теперь, когда у нас есть базовый план тестирования, давайте запустим его и посмотрим результаты.

Сначала сохраните план тестирования, нажав Файл, затем Сохранить , затем укажите желаемое имя файла. Затем выберите « Просмотр результатов в таблице» на левой панели, затем нажмите « Выполнить» в главном меню, затем нажмите « Пуск» (или просто нажмите зеленую стрелку «Пуск» под главным меню). Вы должны увидеть результаты теста в таблице, поскольку тест выполняется следующим образом:

Вы должны увидеть результаты теста в таблице, поскольку тест выполняется следующим образом:

Интерпретация результатов

Вы, вероятно, увидите, что статус всех запросов - «Успешно» (обозначен зеленым треугольником с галочкой в ​​нем). После этого наиболее интересными столбцами являются столбцы Sample Time (ms) и Latency (не показанные в примере).

  • Задержка : количество миллисекунд, прошедших между отправкой запроса JMeter и получением первоначального ответа.
  • Время выборки : количество миллисекунд, затраченных сервером для полного обслуживания запроса (ответ + задержка)

Согласно сгенерированной таблице диапазон времени выборки составлял 128-164 мс. Это разумное время ответа для базовой домашней страницы (около 55 КБ). Если ваш сервер веб-приложений не борется за ресурсы, как показано в примере, на время выборки будут влиять в основном географическое расстояние (которое обычно увеличивает задержку) и размер запрашиваемого элемента (который увеличивает время передачи). Ваши личные результаты будут отличаться от примера.

Таким образом, наш сервер пережил нашу симуляцию 50 пользователей, получивших доступ к нашей домашней странице WordPress 55 КБ в течение 10 секунд (5 каждую секунду), с приемлемым ответом. Посмотрим, что произойдет, когда мы увеличим количество потоков.

Увеличение нагрузки

Давайте попробуем тот же тест с 80 потоками в течение 10 секунд. В элементе « Группа потоков» на левой панели измените Число потоков (пользователей) на 80 . Теперь нажмите View Results in Table , затем нажмите Start . На нашем примере сервера это приводит к следующей таблице:

Как видите, время выборки увеличилось почти до секунды, что указывает на то, что наш сервер веб-приложений начинает перегружаться запросами. Давайте войдем в нашу систему VPS и посмотрим, как мы кратко рассмотрим использование ресурсов во время нагрузочного теста.

Войдите на свой веб-сервер через SSH и запустите top:

Топ

Если у вас нет активных пользователей, обращающихся к вашему серверу, вы должны увидеть, что процент использования процессорами (%) пользователей ( нас ) должен быть очень низким или 0%, а процент простоя ( идентификаторов ) процессоров (%) должен составлять 99% +, как так:

Если у вас нет активных пользователей, обращающихся к вашему серверу, вы должны увидеть, что процент использования процессорами (%) пользователей ( нас ) должен быть очень низким или 0%, а процент простоя ( идентификаторов ) процессоров (%) должен составлять 99% +, как так:

Теперь в JMeter снова запустите тест, а затем переключитесь обратно на сеанс SSH вашего веб-сервера. Вы должны увидеть увеличение использования ресурса:

Вы должны увидеть увеличение использования ресурса:

В нашем примере загрузка ЦП% пользователей составляет 94%, а загрузка системы ( sy ) составляет 4,7% при 0% простоя. У нас не хватает памяти, как показано на рисунке выше, поэтому снижение производительности происходит из-за недостатка мощности процессора! Мы также видим, что процессы php5-fpm, которые обслуживают WordPress, используют большую часть ЦП (около 96% вместе взятых).

Чтобы удовлетворить требования этого моделирования 80 пользователей за 10 секунд, нам нужно либо увеличить наш ЦП, либо оптимизировать настройку нашего сервера, чтобы использовать меньше ЦП. В случае WordPress мы могли бы переместить базу данных MySQL (которая использует часть процессора) на другой сервер, и мы могли бы также реализовать кэширование (что уменьшило бы загрузку процессора).

Если вам интересно, вы можете настроить количество потоков в тесте, чтобы увидеть, сколько ваш сервер может обработать, прежде чем он начнет демонстрировать снижение производительности. В нашем примере с 1 дропом процессора, он работает нормально, пока мы не используем 72 потока в течение 10 секунд.

Заключение

JMeter может быть очень ценным инструментом для определения того, как следует улучшить настройку сервера веб-приложений, уменьшить узкие места и повысить производительность. Теперь, когда вы знакомы с базовым использованием JMeter, не стесняйтесь создавать новые планы тестирования для измерения производительности ваших серверов в различных сценариях.

Тест, который мы использовали в качестве примера, не совсем точно отражает модель использования обычного пользователя, но у JMeter есть инструменты для выполнения различных тестов, которые могут быть полезны в вашей собственной среде. Например, JMeter может быть настроен для имитации входа пользователя в ваше приложение, кэширования на стороне клиента и обработки пользовательских сеансов с перезаписью URL. Есть много других встроенных сэмплеров, слушателей и инструментов настройки, которые могут помочь вам построить желаемый сценарий. Кроме того, существуют плагины JMeter, расширяющие его функциональные возможности, которые можно загрузить по адресу http://jmeter-plugins.org/ ,

О школе
О школе

О школе

Школа была открыта в 1959г. Первые выпускники были выпущены в 1966 г. Учредителем является МНО РТ, Горисполком. Координаты школы: Республика Татарстан, 420012, г. Казань, ул. Муштари д.6.
История

История

Школа № 18 была создана в 1959 году, как первая школа в республике Татарстан с углублённым изучением английского языка. Реформирование школьного образования проводится в школе по
Похожие новости /   Комментарии

    Обновления сайта

    Здравствуйте. Сегодня наконец то мы обновили наш сайт. Теперь на сайте доступны библиотеки для чтения, Вы всегда можете задать вопрос администратору сайта. Получить консультацию на все интересующие вопросы. Ознакомится с новыми событиями и новостями. В дальнейшем сайт будет наполнятся свежими новостями и статьями.

    О школе

    Школа была открыта в 1959г. Первые выпускники были выпущены в 1966 г. Учредителем является МНО РТ, Горисполком. Координаты школы: Республика Татарстан, 420012, г. Казань, ул. Муштари д.6. Полное название- Средняя школа №18 с углублённым изучением английского языка Директор: Шевелёва Надия Магсутовна. Научный руководитель: Русинова Сазида Исмагиловна,

    История

    Школа № 18 была создана в 1959 году, как первая школа в республике Татарстан с углублённым изучением английского языка. Реформирование школьного образования проводится в школе по эволюционному пути, избегая резких преобразований, опасных в этой системе человеческой деятельности. С этой целью 7 лет школа работала в условиях экспериментальной площадки, где