Нагрузочное тестирование базы данных с помощью Apache JMeter

Обзор

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

Обзор

Необходимые ресурсы

  • Установите Java Development Kit.
  • Установите Apache JMeter.

Пример использования

Выполним нагрузочное тестирование базы данных с помощью Apache JMeter. Чтобы измерить ее производительность, используем драйвер MySQL JDBC.

План тестирования базы данных

План тестирования описывает последовательность шагов, которые должен выполнить JMeter. Для его составления необходимы следующие элементы:

  • Группа потоков.
  • Запрос JDBC.
  • Сводный отчет.

Добавление пользователей

Группа потоков предоставляет подробную информацию о количестве пользователей, частоте и количестве запросов, которые будут отправлены пользователями во время тестирования.

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

  • В левой панели кликните правой кнопкой мыши по Test Plan.
  • Выберите AddThreads (Users)Thread Group.
Добавление пользователей
  • Укажите имя группы потоков – «JDBC Users».
  • Нажмите кнопку Add и измените значения свойств, используемые по умолчанию, следующим образом:
  • No. of Threads (users): 10.
  • Ramp-Up Period (in seconds): 100.
  • Loop Count: 10.
Добавление пользователей - 2

Примечание. Ramp-Up Period указывает время, необходимое для увеличения количества потоков до максимального значения.

Мы используем 10 потоков, а период разгона составляет 100 секунд. Каждый новый поток запускается через 10 секунд после начала предыдущего. Таким образом, запрос будет выполнен 10 (потоков) * 10 (циклов) = 100 раз. Аналогично, для 10 таблиц общее количество экземпляров составляет 100.

Добавление запросов JDBC

Чтобы добавить запрос JDBC, выполните следующие действия:

  • В левой панели кликните правой кнопкой мыши по Thread Group.
  • Выберите AddConfig ElementJDBC Connection Configuration.
  • Настройте следующие параметры:
  • Variable Name: myDatabase

Примечание. Это имя должно быть уникальным, так как оно используется JDBC Sampler для идентификации используемой конфигурации.

  • Database URL:jdbc:mysql://ipOfTheServer:3306/cloud
  • JDBC Driver class:mysql.jdbc.Driver.
  • Username:имя пользователя базы данных.

Password: пароль.

Добавление запросов JDBC

Добавление сэмплера

Чтобы добавить сэмплер, выполните следующие действия:

  • В левой панели кликните правой кнопкой мыши по Thread Group.
  • Выберите AddSamplerJDBC Request.
  • Укажите Variable Name:«myDatabase».
    • Введите запрос в поле SQL Query.
Добавление сэмплера

Добавление обработчика для просмотра и сохранения результатов теста

Чтобы просмотреть результаты теста, выполните следующие действия:

  • В левой панели кликните правой кнопкой мыши по Thread Group.
  • Выберите AddListenerView Results Tree/Summary Report/Graph Results.
  • Сохраните план тестирования и нажмите Run(Start или «Ctrl + R»), чтобы запустить тест.
  • Все результаты теста будут сохранены в обработчике.

Просмотр результатов теста:

Результаты можно просмотреть в древовидном формате:

Просмотр результатов теста:

В табличном представлении:

Просмотр результатов теста: - 2

В графическом:

А также в виде диаграмм:

Показатели эффективности

С помощью JMeter можно увидеть различные показатели производительности.

Пропускная способность

Общее количество запросов в единицу времени, отправленных на сервер во время теста.

В нашем случае пропускная способность составляет 61,566 / в минуту. Высокое значение пропускной способности указывает на хорошую производительность.

Задержка

Задержка при передаче сообщения. Меньшее значение задержки указывает на большой объем отправляемой / получаемой информации. В нашем примере задержка для первого потока составляет 24446.

Минимальное / максимальное время загрузки / время отклика / время выборки

Разница между временем отправки запроса и временем получения ответа. Время отклика всегда больше или равно задержке.

В нашем примере для всех запросов время отклика> = задержка.

Линия 90% (90-ый процентиль)

Пороговое значение, ниже которого попадает 90% экземпляров. Чтобы вычислить этот показатель, отсортируйте экземпляры транзакций по их значению и удалите верхние 10% экземпляров. Самое большое из оставшихся значений – это линия 90 %.

Ошибки

Общий процент ошибок, найденных в экземпляре запроса. Значение 0,00% указывает на то, что все запросы выполнены успешно и производительность хорошая.

Стандартное отклонение

Более низкое значение стандартного отклонения указывает на большую согласованность данных. Стандартное отклонение должно быть меньше или равно половине среднего времени для метки. Если значение больше, это указывает на недопустимое значение. В нашем случае это 2881.

Минимальное время

Минимальное время, необходимое для отправки запросов. Общее время равно минимальному времени для всех образцов. В нашем случае это 0 мс.

Максимальное время

Максимальное время, необходимое для отправки запросов. Общее время равно максимальному времени для всех образцов. В нашем случае это 23 234 мс.

Среднее время

Среднее время ответа на запрос

КБ / сек

Измерение пропускной способности в килобайтах в секунду. В нашем случае это 0.

Сэмплеры

Общее количество запросов, отправленных на сервер. В нашем случае это 100.

Заключение

В этой статье мы рассмотрели тестирование производительности базы данных с помощью JMeter путем увеличения пользовательской нагрузки.

Полученные в ходе тестирования показатели могут использоваться в Performance Tuning Engineer для выявления слабых мест производительности.

Пожалуйста, оставляйте ваши комментарии по текущей теме материала. Мы крайне благодарны вам за ваши комментарии, подписки, отклики, лайки, дизлайки!

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

Вадим Дворниковавтор-переводчик статьи «Database Performance Testing with Apache JMeter»