- В процессе выполнения задач по нагрузочному тестированию базы данных была проведена настройка проекта WordPress, который позволяет создавать сайты без знания языков программирования.
- Команды для подготовки и запуска проекта:
# Переход в директорию для хранения проекта:
cd ~/Documents/Performance_testingQA79
# Клонирование репозитория проекта:
git clone https://github.com/mshegolev/congenial-potato.git
# Переход в каталог WordPress и открытие папки wp в Visual Studio Code:
cd congenial-potato/wp && code .
- Для совместимости плагинов в
docker-compose.yml
изменен образ контейнера наimage: wordpress:php8.0
.- Добавлена строка
platform: linux/x86_64
, чтобы указать Docker на создание образов для архитектуры x86_64 (необходимо для работы на Apple M1 с архитектурой ARM). - Чтобы избежать предупреждения при запуске контейнеров удалена строка
version: '3'
.- В версиях Docker Compose 2.0 и выше больше не требуется указывать версию файла, так как композитор теперь автоматически обрабатывает данные. Это упрощает работу и делает файлы конфигурации более понятными.
- Добавлена строка
- Запущены контейнеры с помощью Docker и проверено их состояние:
# Запуск контейнеров Docker в фоновом режиме
docker-compose up -d
# Проверка запущенных контейнеров
docker ps
- В браузере по адресу
localhost:80
указанном вdocker-compose.uml
запущен сайт WordPress.- Выбран язык.
- Заполнены все поля: название сайта, имя пользователя, email, придуман пароль, ☑️.
- На странице добавления комментария, я убедился, что комментарий успешно добавляется.
- Подключение к базе данных MariaDB было успешно выполнено с использованием DBeaver, который используется для работы с системой управления базами данных (СУБД).
- В DBeaver была выбрана база данных MariaDB и настроено подключение с использованием следующих данных, взятых из файла
docker-compose.yml
- host:
localhost
port:3306
- database:
wpdb
- username:
wpuser
- password:
wppassword
- host:
- Также были загружены файлы драйвера для MariaDB.
- В DBeaver была выбрана база данных MariaDB и настроено подключение с использованием следующих данных, взятых из файла
3. Установка хранимой процедуры базы данных WordPress
- Произведена проверка доступа к комментарию: Базы данных => wpdb => Таблицы => wp_comments
- Скопирован файл с хранимой процедурой
scripts.sql
и перенесен в DBeaver. Вменю
выбраноРедактор SQL
и создан новый редактор, где был вставлен скопированный код.▶️ Выделен код и вызвана команда на удаление хранимой процедурыdrop procedure if exists dorepeat_v1;
, так как в процедуре были внесены изменения — комментарийcomment
был изменен надождь
.▶️ Затем выделен весь код, относящийся к хранимой процедуреdorepeat_v1
, который заканчивается ключевым словомEND
, и была вызвана команда для создания процедуры.▶️ Для создания процедурыdorepeat_v2
, выделен полный код, заканчивающийся наEND
, и выполнена команда для её создания (команда на удаление дляdorepeat_v2
не потребовалась, так как данная процедура до этого не существовала).- 🔁 Обновлена папка
Процедуры
, чтобы убедиться, что процедуры созданы.
- Вызов хранимой процедуры:
▶️ Выполнена команда на запуск процедурыCALL dorepeat_v1(5);
для создания 5 комментариев со словом «дождь», указанным в хранимой процедуреdorepeat_v1
.- Так как тестовые записи были созданы напрямую в базу данных, не отработала логика работы счетчика количества комментариев на тестируемой странице
http://localhost/привет-мир
. Перед тестированием следует уточнить, насколько важно, чтобы какая-то логика отрабатывала и не терялась.
- Так как тестовые записи были созданы напрямую в базу данных, не отработала логика работы счетчика количества комментариев на тестируемой странице
▶️ Для создания 5 комментариев со словом «солнце» была вызвана командаCALL dorepeat_v2(5,'солнце');
.- В отличие от хранимой процедуры v1, в процедуре v2, помимо текста указывался также номер комментария (1солнце, 2солнце и т. д.).
▶️ Для удаления комментариев выполнен кодDELETE FROM wp_comments...
, относящийся к очистке базы данных.
- Скачан JDBC-драйвер для MySQL и помещен в папку lib внутри каталога JMeter:
mv ~/Downloads/mysql-connector-j-8.4.0.jar /Applications/apache-jmeter-5.6.3/lib
- Скачанный файл
wp_db_test.jmx
был перемещен в директорию для хранения тестов производительности и запущен с помощью JMeter для проведения нагрузочного тестирования базы данных:
# Созданы папки для хранения проекта:
mkdir -p ~/Documents/Performance_testingQA79/Database_load_testing/jmeter-tests
# Перемещение файла .jmx в директорию:
mv ~/Downloads/wp_db_test.jmx ~/Documents/Performance_testingQA79/Database_load_testing/jmeter-tests
# # Переход в директорию:
cd ~/Documents/Performance_testingQA79/Data_load-testing/jmeter-tests
#Открытие теста в JMeter:
jmeter -t wp_db_test.jmx
- Установлены графики в JMeter (Add => Listener => jp@gc - Назввание графика)
- Hits per Second (HPS, запросов в секунду)
- График Hits per Second (HPS) в Apache JMeter отображает количество HTTP-запросов, поступающих на сервер за одну секунду, и помогает оценить его производительность и нагрузку.
- Transactions per Second (TPS, транзакций в секунду)
- Этот график является одним из ключевых индикаторов производительности приложения и позволяет оценить, насколько эффективно система справляется с нагрузкой.
- Response Times Over Time (Время отклика с течением времени)
- Этот график отображает время отклика запросов по мере выполнения теста. Можно увидеть, как время отклика изменяется, например, в зависимости от увеличения нагрузки.
- Hits per Second (HPS, запросов в секунду)
- В системе была вызвана настройка Set Up, в которой использовалось 5 пользователей. В этой настройке группа readers и writers была закомментирована (Disable), и тест был запущен.
- Затем была закомментирована группа readers, и группа Set Up была отключена, в то время как группа writers была раскомментирована, чтобы вызвать хранимую процедуру
v2
. - Были сделаны скриншоты графиков процедуры
v2
для дальнейшего сравнения с процедуройv1
. - После этого была закомментирована группа writers v2, и вызвана хранимая процедура
v1
. - Были сделаны скриншоты в качестве доказательства того, что процедура
v2
работает медленнее, чем процедураv1
.
Если во время теста появится ошибка:
По умолчанию для работы JMeter компьютер выделяет 1 GB памяти, чтобы обеспечить стабильную работу тестов на машине. Однако, для ресурсоемких тестов, этого объема может не хватать, что приводит к ошибкам из-за нехватки памяти.
Решением в этой ситуации является увеличение выделенной для JMeter памяти:
Откройте файл jmeter.bat, если работаете в Windows, или jmeter.sh, если работаете на Linux или на Mac, в текстовом редакторе.
Найдите строчку:
set HEAP=-Xms1g -Xmx1g
Увеличьте память до комфортного вам объема. Учтите, что JMeter не должен использовать всю память вашего компьютера, поэтому не выделяйте больше памяти, чем у вас доступно. Рекомендуется установить 2 GB, этого должно быть достаточно для ваших задач:
set HEAP=-Xms2g -Xmx2g
- build-db-test-plan — инструкция создания теста DB с нуля.
- mysql-db-driver — драйвер с официального сайта для установка в JMeter/Lib.