Первая статья из цикла, помогающая разобраться с использованием 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%
Настройка мониторинга
В качестве критериев мониторинга были выбраны следующие:
- Текущая загрузка CPU
- Load Average за 1 минуту
- Load Average за 5 минут
- Load Average за 15 минут
- Утилизация оперативной памяти
- Утилизация файла подкачки
Настроены соответствующие типы данных (Integer и Float).
Пример данных без нагрузки:
Настройка отправки событий
Настройка отправки событий kraken проводиться на вкладе Messages.
Добавляем новую строку кнопка "Add", после чего в выпадающем списке выбираем необходимый шаблон
Аналогичный образом выбираем протокол отправки, для теста выберем асинхронный метод отправки HTTP Get запросов.
Указываем хост подключения и порт, в соответствующие поля
Время теста (Stop time) указываем 1800 (30 минут).
EPS устанавливаем в 0, для того что бы Kraken отправлял событий без ограничений, так как необходимо определить максимальную нагрузку возможную на веб-сервер.
Дополнительные настройки kraken
Дополнительно изменим параметры генерации событий и отправки.
Количество генераторов событий: 1
Размер балка, в генераторе: 1
Количество потоков отправки: 3
Первые результаты тестирования
После начала тестирования, в системы была зафиксирована значительная нагрузка на систему демоном tuned.
При этом на сервер отправляется порядка 950 событий в секунду
демон был остановлен, для снижения нагрузки
service tuned stop
В результате получили увеличение количества отправляемых в секунду событий, более 1000 RPS
Результаты тестирования
По окончанию тестирования, средний поток событий составил порядка 1300 RPS. Средняя загрузка CPU составила 38%, маскимальный Load Average составил 5.3, в момент работы демона tuned.
Краткие выводы
- Apache + PHP может обрабатывать значительное количество запросов
- Узким местом может оказаться MySQL, так как bWAPP использует его только на некоторых страницах, то MySQL не оказывал влияние на быстродействие системы.
- tuned может создавать дополнительную нагрузку в попытке оптимизации.