Язык

Новости компании

JMeter: нагрузочное тестирование бaзы данных Часть II

August 8, 2013

databases testing

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

О том как настроить JDBC Connection Configuration и о части настроек пула из этого раздела мы уже говорили в нашей предыдущей статье «JMeter: нагрузочное тестирование бaзы данных Часть I».

Сегодня мы расскажем о конфигурации двух последующих секций Connection Validation by Pool и Database Connection Configuration, а также поговорим о втором элементе JMeter JDBC Request.

Connection Validation by Pool — это настройки для контроля корректности сессий. Наш пул с некоторой периодичностью делает запрос из поля Validation Query. В случае если сессия некорректна, пул просто её перезапускает. Допустим, в процессе теста перезапустить базу данных, то пул просто пересоздаст коннект прямо во время теста.

И последняя секция Database Connection Configuration. тут с помощью URL’а можно сразу задать хост, порт и имя базы данных, с которыми будем работать.

Второй элемент JMeter — это JDBC Request из раздела Samplers.

Добавляем запрос Thread Group-> Add -> Sampler -> JDBC Request.

Далее пишем собственно сам запрос:
jdbc request configure
Этот элемент очень прост. Существуют два основных типа запросов к базе данных: Statement и Prepared Statement. Разница состоит в том, что sql-запрос это не просто строка с командами и данными, а объект (Java-объект или просто сущность ООП) с определенной структурой, который собирается на клиентской стороне и разбирается на стороне сервера. Каждый раз создавать такой объект нам не надо. Необходимо просто иметь некий шаблон запроса, куда будем подставлять необходимые значения и отправлять на исполнение серверу.

Разница в том, что Statementэто объекты, которые каждый раз собираются заново без использования шаблонов. А Prepared Statementэто шаблон, который собирается один раз и дальше используется для подстановки необходимых нам данных. Использование Prepared Statement может дать намного большую производительность выполнения тестов.

Prepared Statement имеет и свои минусы. Хранение шаблона сходно кэшированию. Этот кэш хранится в JVM-heap . Необходимо создавать Prepared Statement на каждый шаблон запроса и на каждый коннект к БД. И чем больше коннектов у нас используется, тем больший размер кэша нам необходим. На выполнении длинного теста такой кэш может быстро перейти в Old Generation и, при наличии достаточного объема памяти, работать с ним гораздо быстрее. Что, согласитесь, удобнее. Но, если памяти будет недостаточно, то Jmeter, увы, подвиснет и упадет. В этом случае есть возможно распаралеливания запуска тестов Jmetr-ом на разных машинах.

А Statement объекты — будут постоянно пересоздаваться объекты в New Generation.

Добавляем необходимые отчеты:

Тhread Group-> Add → Listener ->View Results Tree ,

Thread Group-> Add → Listener → Graph Results,

Thread Group-> Add → Listener → View Results in Table

Сохраняем, Ctrl+E b Ctrl+R и смотрим графики!