Нагрузочное тестирование веб-сайта

Первая статья из цикла, помогающая разобраться с использованием Kraken Stress Testing Toolkit.

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

Тестовая среда

Тестовый веб-сервер развернут в виртуальной среде на базе Centos 8 Stream.

Количество ядер процессора: 3

Объем оперативной памяти: 2 гигабайт

Объем жесткого диска: 60 гигабайт.

На сервере развернуты следующие компоненты:

В качестве веб приложения для тестирования было выбрано bWAPP

Buggy web application (bWAPP) — это веб-приложение с отрытым исходным кодом. Предназначенное для поиска и эксплуатации уязвимостей в веб-приложениях.

Веб-сервер доступен по доменному имени test.local

Изменения внесенные в конфигурацию сервера

  • Отключен SElinux
  • Apach сконфигурирован в prefork
  • Настроен буферизация журналов доступа Apache

Выбор шаблона для тестирования

В качестве шаблона для тестирования был выбран "HTTP Rand Param", эмитирующий недавно обнаруженную DDOS атаку с сайтов WordPress.

Так же, в данном шаблоне рандомизируется user-agent, из переменной %user_agent%

Данный шаблон является стандартным:

[MAIN]
name=HTTP Rand Param
index=?%rn_str%
UserAgent=%user_agent%

Настройка мониторинга

kraken настройки мониоринга

В качестве критериев мониторинга были выбраны следующие:

  • Текущая загрузка CPU
  • Load Average за 1 минуту
  • Load Average за 5 минут
  • Load Average за 15 минут
  • Утилизация оперативной памяти
  • Утилизация файла подкачки

Настроены соответствующие типы данных (Integer и Float).

Пример данных без нагрузки:

Kraken: мониторинг значений

 

Настройка отправки событий

Настройка отправки событий kraken проводиться на вкладе Messages.

Добавляем новую строку кнопка "Add", после чего в выпадающем списке выбираем необходимый шаблон

kraken: выбор шаблона

Аналогичный образом выбираем протокол отправки, для теста выберем асинхронный метод отправки HTTP Get запросов.

kraken выбор протокола отправки

Указываем хост подключения и порт, в соответствующие поля

Время теста (Stop time) указываем 1800 (30 минут).

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

Kraken настройка отправки событий

Дополнительные настройки kraken

Дополнительно изменим параметры генерации событий  и отправки.

Количество генераторов событий: 1

Размер балка, в генераторе: 1

Количество потоков отправки: 3

Kraken дополнительные натройки

Первые результаты тестирования

После начала тестирования, в системы была зафиксирована значительная нагрузка на систему демоном tuned.

HTOP

При этом на сервер отправляется порядка 950 событий в секунду

Kraken отпарвка событий

демон был остановлен, для снижения нагрузки

service tuned stop

htop

В результате получили увеличение количества отправляемых в секунду событий, более 1000 RPS

Kraken отпарвка событий (1000 RPS)

Результаты тестирования

По окончанию тестирования, средний поток событий составил порядка 1300 RPS. Средняя загрузка CPU составила 38%, маскимальный Load Average составил 5.3, в момент работы демона tuned.

Краткие выводы

  • Apache + PHP может обрабатывать значительное количество запросов
  • Узким местом может оказаться MySQL, так как bWAPP использует его только на некоторых страницах, то  MySQL не оказывал влияние на быстродействие системы.
  • tuned может создавать дополнительную нагрузку в попытке оптимизации.

kraken: результаты

kraken мониторинг - результаты

Поделиться с друзьями