«1. Обзор
В предыдущем уроке мы видели, как использовать Gatling для нагрузочного тестирования пользовательского веб-приложения.
В этой статье мы будем использовать инструмент стресса Gatling для измерения производительности промежуточной среды этого веб-сайта.
2. Тестовый сценарий
Давайте сначала настроим наш основной сценарий использования — тот, который близок к обычному пользователю, просматривающему сайт:
- Go to the Home Page
- Open an Article from Home Page
- Go to Guides/REST
- Go to the REST Category
- Go to the Full Archive
- Open an Article from the Archive
3. Запишите сценарий
Теперь, мы запишем наш сценарий с помощью регистратора Gatling — следующим образом:
$GATLING_HOME/bin/recorder.sh
А для пользователей Windows:
%GATLING_HOME%\bin\recorder.bat
Примечание: GATLING_HOME — это каталог установки Gatling.
Существует два режима Gatling Recorder: HTTP Proxy и HAR Converter.
Мы подробно обсуждали режим прокси-сервера HTTP в предыдущем руководстве, поэтому давайте теперь посмотрим на опцию HAR Converter.
3.1. HAR Converter
HAR — это сокращение от HTTP Archive — это формат, который в основном записывает полную информацию о сеансе просмотра.
Мы можем получить файлы HAR из браузера, а затем использовать Gatling Recorder, чтобы преобразовать их в симуляцию.
Мы создадим наш файл HAR с помощью инструментов разработчика Chrome:
-
Меню -\u003e Дополнительные инструменты -\u003e Инструменты разработчика Перейдите на вкладку «Сеть». Убедитесь, что установлен флажок «Сохранить журнал». После того, как вы закончите навигацию по веб-сайту, щелкните правой кнопкой мыши. в запросах, которые вы хотите экспортировать. Затем выберите «Копировать все как HAR». Вставьте их в файл, затем импортируйте его из регистратора Gatling
После того, как вы закончите настройку регистратора Gatling в соответствии со своими предпочтениями, нажмите «Пуск».
Обратите внимание, что выходная папка по умолчанию GATLING_HOME/user-files-simulations
4. Симуляция
Сгенерированный файл моделирования аналогичным образом написан на Scala. В целом все в порядке, но не очень читабельно, поэтому мы внесем некоторые коррективы, чтобы очистить его. Вот наша окончательная симуляция:
class RestSimulation extends Simulation {
val httpProtocol = http.baseURL("http://staging.baeldung.com")
val scn = scenario("RestSimulation")
.exec(http("home").get("/"))
.pause(23)
.exec(http("article_1").get("/spring-rest-api-metrics"))
.pause(39)
.exec(http("rest_series").get("/rest-with-spring-series"))
.pause(60)
.exec(http("rest_category").get("/category/rest/"))
.pause(26)
.exec(http("archive").get("/full_archive"))
.pause(70)
.exec(http("article_2").get("/spring-data-rest-intro"))
setUp(scn.inject(atOnceUsers(1))).protocols(httpProtocol)
}
Здесь важно отметить, что полный файл симуляции намного больше; здесь мы не включили статические ресурсы для простоты.
5. Запустите нагрузочный тест
Теперь мы можем запустить нашу симуляцию – следующим образом:
$GATLING_HOME/bin/gatling.sh
Для пользователей Windows:
%GATLING_HOME%\bin\gatling.bat
Инструмент Gatling просканирует GATLING_HOME/user -files-simulations и список всех найденных симуляций на выбор.
После запуска моделирования вот как выглядят результаты:
Для одного пользователя:
> request count 304 (OK=304 KO=0)
> min response time 75 (OK=75 KO=-)
> max response time 13745 (OK=13745 KO=-)
> mean response time 1102 (OK=1102 KO=-)
> std deviation 1728 (OK=1728 KO=-)
> response time 50th percentile 660 (OK=660 KO=-)
> response time 75th percentile 1006 (OK=1006 KO=-)
> mean requests/sec 0.53 (OK=0.53 KO=-)
---- Response Time Distribution ------------------------------------
> t < 800 ms 183 ( 60%)
> 800 ms < t < 1200 ms 54 ( 18%)
> t > 1200 ms 67 ( 22%)
> failed 0 ( 0%)
Для 5 одновременных пользователей:
> request count 1520 (OK=1520 KO=0)
> min response time 70 (OK=70 KO=-)
> max response time 30289 (OK=30289 KO=-)
> mean response time 1248 (OK=1248 KO=-)
> std deviation 2079 (OK=2079 KO=-)
> response time 50th percentile 504 (OK=504 KO=-)
> response time 75th percentile 1440 (OK=1440 KO=-)
> mean requests/sec 2.411 (OK=2.411 KO=-)
---- Response Time Distribution ------------------------------------
> t < 800 ms 943 ( 62%)
> 800 ms < t < 1200 ms 138 ( 9%)
> t > 1200 ms 439 ( 29%)
> failed 0 ( 0%)
Для 10 одновременных пользователей:
> request count 3058 (OK=3018 KO=40)
> min response time 0 (OK=69 KO=0)
> max response time 44916 (OK=44916 KO=30094)
> mean response time 2193 (OK=2063 KO=11996)
> std deviation 4185 (OK=3953 KO=7888)
> response time 50th percentile 506 (OK=494 KO=13670)
> response time 75th percentile 2035 (OK=1976 KO=15835)
> mean requests/sec 3.208 (OK=3.166 KO=0.042)
---- Response Time Distribution ----------------------------------------
> t < 800 ms 1752 ( 57%)
> 800 ms < t < 1200 ms 220 ( 7%)
> t > 1200 ms 1046 ( 34%)
> failed 40 ( 1%)
Примечание. что некоторые запросы не удались при тестировании 10 одновременных пользователей — просто потому, что промежуточная среда не способна справиться с такой нагрузкой.
6. Заключение
В этой быстрой статье мы рассмотрели вариант HAR для записи тестовых сценариев в Gatling, а также провели простой начальный тест baeldung.com.