Результаты нагрузочного тестирования#
Отчёт объединяет результаты одного многоэтапного нагрузочного сценария и показывает, как Blitz Identity Provider ведёт себя при последовательной смене уровней нагрузки. Основная цель — зафиксировать устойчивость системы на длительной серии этапов, а также отдельно показать сравнительные показатели для каждого уровня нагрузки.
Режим запуска:
многоэтапныйВерсия Blitz:
5.31.7-releaseGitLab pipeline ID:
29316Количество прогонов в серии:
4Уровни нагрузки в серии:
1200, 600, 1500, 750пользователейОбщая длительность основной нагрузки:
8 чПолная длительность сценария с разогревом:
8 ч 5 минИнтерпретация нагрузки:
1 поток ~= 1 параллельный пользовательПоследовательность этапов: этап 1 —
1200пользователей,1 ч, этап 2 —600пользователей,3 ч, этап 3 —1500пользователей,1 ч, этап 4 —750пользователей,3 ч.
Методика тестирования#
Тестовый стенд#
Компоненты
Компоненты |
Назначение |
Инстансы |
Ресурсный профиль |
Размещение |
|---|---|---|---|---|
Nginx |
Балансировщик нагрузки |
|
|
|
Blitz IDP |
Балансировщик нагрузки |
|
|
|
PostgreSQL |
Балансировщик нагрузки |
|
|
|
Memcached |
Балансировщик нагрузки |
|
|
|
389 Directory Server |
Балансировщик нагрузки |
|
|
|
JMeter |
Балансировщик нагрузки |
|
|
|
ВМ
ВМ |
Роль |
Ресурсы |
Хост |
|---|---|---|---|
ВМ Blitz #1 |
Blitz IDP |
|
|
ВМ Blitz #2 |
Blitz IDP |
|
|
ВМ инфраструктуры |
PostgreSQL / Memcached / 389 Directory Server / Nginx |
|
|
ВМ генератора нагрузки |
JMeter |
|
|
Процесс аутентификации#
Тестовый процесс аутентификации состоял из следующих типов запросов:
LOGIN AE— инициализация аутентификацииLOGIN PAGE— получение страницы логинаLOGIN POST Login— проверка логина и пароля через LDAPLOGIN TE— получение маркера доступаLOGIN ME— получение данных пользователяLOGOUT— завершение пользовательской сессии после успешного входа, если операция включена настройками прогона
Сценарий тестирования#
Серия моделирует один длительный рабочий цикл стенда, в котором уровни нагрузки последовательно меняются по заранее заданному сценарию:
Разогрев:
5минут один раз перед первым этапом серии. Эта фаза не учитывается в итоговых метриках и итоговой оценке качества;Перед каждым этапом выполняется плавный выход на целевое количество потоков в течение
60секунд. Эта фаза не учитывается в итоговых метриках, графиках и итоговой оценке качества;Фактическая интенсивность запросов не ограничивается искусственно: её определяет сама система под нагрузкой.
Этап |
Потоки |
Длительность |
Инстансы генератора |
Потоков на инстанс |
Разогрев перед этапом |
|---|---|---|---|---|---|
Этап 1 |
1200 |
1 ч. |
3 |
400 |
да |
Этап 2 |
600 |
3 ч. |
3 |
200 |
нет |
Этап 3 |
1500 |
1 ч. |
3 |
500 |
нет |
Этап 4 |
750 |
3 ч. |
3 |
250 |
нет |
Схема стенда#
Базовая конфигурация#
Компонент |
Параметр |
Значение |
|---|---|---|
Blitz IDP |
Internal stores |
|
Blitz IDP |
Java options |
|
Blitz IDP |
LDAP pool |
|
Blitz IDP |
JDBC pool |
|
JMeter |
Logout after login |
|
389 Directory Server |
Тюнинг LDAP |
|
Nginx |
Upstream blitz-idp |
|
Инструменты мониторинга#
Для каждого прогона собирались как пользовательские метрики, так и показатели состояния стенда, чтобы сравнение отражало не только время отклика, но и устойчивость работы системы.
JMeter: количество запросов, время отклика, доля ошибок и фактическое число запросов в секунду.
RPS — фактическое число запросов в секунду; в таблицах это показатель пропускной способности стенда.
Метрики сервисов Blitz: состояние модулей аутентификации и внутренних пулов соединений.
JVM-метрики: заполнение heap и паузы сборщика мусора.
Инфраструктурные метрики: загрузка CPU и памяти на ВМ Blitz, инфраструктуры и генератора нагрузки.
PostgreSQL и LDAP: служебные показатели, позволяющие понять, не становится ли хранилище узким местом при росте нагрузки.
Основные результаты тестирования#
Результаты по этапам сценария#
Сначала приведены сводные показатели по каждому этапу сценария, а затем — детальные метрики по отдельным операциям аутентификации.
Этап |
Потоки |
Длительность |
Среднее число HTTP-запросов/сек |
Среднее число завершенных входов/сек |
Средний отклик, мс |
Средняя длительность полного входа, мс |
Доля ошибок |
Рестарты IDP |
Итоговая оценка качества |
|---|---|---|---|---|---|---|---|---|---|
Этап 1 |
1200 |
1 ч |
1812.93 |
363.14 |
547.31 |
2732.24 |
0.106% |
0 |
успешно |
Этап 2 |
600 |
3 ч |
1929.74 |
386.32 |
299.80 |
1497.37 |
0.056% |
0 |
успешно |
Этап 3 |
1500 |
1 ч |
1570.68 |
314.60 |
571.77 |
2853.79 |
0.117% |
0 |
успешно |
Этап 4 |
750 |
3 ч |
1894.25 |
379.25 |
375.76 |
1876.52 |
0.064% |
0 |
успешно |
Детальные показатели по операциям
Таблица ниже показывает среднее время отклика и 95/99-й процентиль по ключевым шагам аутентификации для каждого этапа сценария.
Показатель |
Метрика |
Этап 1 · 1200 пользователей |
Этап 2 · 600 пользователей |
Этап 3 · 1500 пользователей |
Этап 4 · 750 пользователей |
|---|---|---|---|---|---|
Инициализация аутентификации |
Среднее время отклика, мс |
261.64 |
75.49 |
485.41 |
98.55 |
Инициализация аутентификации |
95-й процентиль, мс |
846.00 |
300.00 |
1676.00 |
392.00 |
Инициализация аутентификации |
99-й процентиль, мс |
1408.00 |
491.00 |
2797.00 |
630.00 |
Получение страницы логина |
Среднее время отклика, мс |
1099.99 |
604.90 |
979.51 |
792.96 |
Получение страницы логина |
95-й процентиль, мс |
1893.00 |
1016.00 |
2115.00 |
1300.00 |
Получение страницы логина |
99-й процентиль, мс |
2202.00 |
1208.00 |
2861.00 |
1566.00 |
Проверка логина и пароля |
Среднее время отклика, мс |
786.88 |
493.21 |
801.03 |
605.87 |
Проверка логина и пароля |
95-й процентиль, мс |
1380.00 |
816.00 |
1725.00 |
994.00 |
Проверка логина и пароля |
99-й процентиль, мс |
1656.00 |
974.00 |
2284.00 |
1212.00 |
Получение маркера доступа |
Среднее время отклика, мс |
278.77 |
157.90 |
284.62 |
183.42 |
Получение маркера доступа |
95-й процентиль, мс |
579.00 |
331.00 |
661.00 |
383.00 |
Получение маркера доступа |
99-й процентиль, мс |
803.00 |
467.00 |
935.00 |
552.00 |
Получение данных пользователя |
Среднее время отклика, мс |
304.97 |
165.86 |
303.23 |
195.72 |
Получение данных пользователя |
95-й процентиль, мс |
636.00 |
345.00 |
706.00 |
404.00 |
Получение данных пользователя |
99-й процентиль, мс |
868.00 |
480.00 |
996.00 |
578.00 |
Усредненное время выполнения операции |
Среднее время отклика, мс |
546.45 |
299.47 |
570.76 |
375.30 |
Усредненное время выполнения операции |
95-й процентиль, мс |
1066.80 |
561.60 |
1376.60 |
694.60 |
Усредненное время выполнения операции |
99-й процентиль, мс |
1387.40 |
724.00 |
1974.60 |
907.60 |
Средняя длительность полного входа |
мс |
2732.24 |
1497.37 |
2853.79 |
1876.52 |
Усредненное время выполнения операции — среднее арифметическое по пяти основным шагам базового сценария аутентификации: инициализация аутентификации, получение страницы логина, проверка логина и пароля, получение маркера доступа и получение данных пользователя.
Средняя длительность полного входа — сумма средних времен пяти основных шагов:
LOGIN AE,LOGIN PAGE,LOGIN POST Login,LOGIN TE,LOGIN ME.
Сравнение уровней нагрузки
Параллельные пользователи |
Среднее число HTTP-запросов/сек |
Средний отклик, мс |
Средняя длительность полного входа, мс |
Доля ошибок |
Относительное число запросов |
Относительное время отклика |
Относительная длительность полного входа |
|---|---|---|---|---|---|---|---|
600 (базовая нагрузка) |
2070.23 |
279.85 |
1397.66 |
0.057% |
1.00x |
1.00x |
1.00x |
750 |
1964.72 |
363.65 |
1816.00 |
0.060% |
0.95x |
1.30x |
1.30x |
1200 |
1924.06 |
472.51 |
2358.87 |
0.081% |
0.93x |
1.69x |
1.69x |
1500 |
1657.72 |
433.76 |
2165.48 |
0.092% |
0.80x |
1.55x |
1.55x |
Время выполнения основных операций
Условные обозначения операций:
LOGIN AE— инициализация аутентификации;LOGIN PAGE— получение страницы логина;LOGIN POST Login— проверка логина и пароля;LOGIN TE— получение маркера доступа;LOGIN ME— получение данных пользователя.
Этап 1 · 1200 пользователей
Операция |
Кол-во запросов |
Ошибки |
Доля ошибок |
Среднее, мс |
95-й процентиль, мс |
99-й процентиль, мс |
|---|---|---|---|---|---|---|
|
1386825 |
2 |
0.000% |
312.00 |
1026.00 |
1689.00 |
|
1382061 |
746 |
0.054% |
262.73 |
576.00 |
819.00 |
|
1387041 |
0 |
0.000% |
893.15 |
1625.00 |
1931.00 |
|
1386882 |
3176 |
0.229% |
647.71 |
1183.00 |
1449.00 |
|
1383794 |
1692 |
0.122% |
243.29 |
531.00 |
768.00 |
Этап 2 · 600 пользователей
Операция |
Кол-во запросов |
Ошибки |
Доля ошибок |
Среднее, мс |
95-й процентиль, мс |
99-й процентиль, мс |
|---|---|---|---|---|---|---|
|
4476095 |
6 |
0.000% |
68.91 |
287.00 |
471.00 |
|
4463785 |
339 |
0.008% |
145.20 |
314.00 |
449.00 |
|
4476166 |
0 |
0.000% |
575.80 |
931.00 |
1090.00 |
|
4476115 |
9861 |
0.220% |
467.89 |
745.00 |
886.00 |
|
4466326 |
2487 |
0.056% |
139.87 |
311.00 |
452.00 |
Этап 3 · 1500 пользователей
Операция |
Кол-во запросов |
Ошибки |
Доля ошибок |
Среднее, мс |
95-й процентиль, мс |
99-й процентиль, мс |
|---|---|---|---|---|---|---|
|
1194725 |
0 |
0.000% |
518.78 |
1892.00 |
3149.00 |
|
1190424 |
883 |
0.074% |
214.08 |
508.00 |
739.00 |
|
1195235 |
0 |
0.000% |
657.39 |
1590.00 |
1995.00 |
|
1195154 |
2799 |
0.234% |
564.17 |
1296.00 |
1734.00 |
|
1192271 |
1793 |
0.150% |
211.07 |
488.00 |
718.00 |
Этап 4 · 750 пользователей
Результаты по временным интервалам
Каждый прогон может быть разбит на один или несколько временных интервалов анализа. Они нужны только для отчёта: помогают увидеть, в какой части основного интервала измерений начинается деградация по времени отклика или ошибкам. Это не отдельные сценарии теста и не разные уровни нагрузки внутри одного прогона.
Этап 1 · 1200 пользователей
Интервал анализа |
Окно анализа |
Длительность |
|---|---|---|
Интервал 1 |
00:00-00:30 |
30 мин |
Интервал 2 |
00:30-01:00 |
30 мин |
Интервал анализа |
Кол-во запросов |
Ошибки |
Доля ошибок |
Среднее, мс |
95-й процентиль, мс |
99-й процентиль, мс |
|---|---|---|---|---|---|---|
Интервал 1 |
3456961 |
2678 |
0.077% |
466.66 |
1276.00 |
1684.00 |
Интервал 2 |
3469642 |
2938 |
0.085% |
477.39 |
1296.00 |
1689.00 |
Этап 2 · 600 пользователей
Интервал анализа |
Окно анализа |
Длительность |
|---|---|---|
Интервал 1 |
00:00-01:30 |
1 ч 30 мин |
Интервал 2 |
01:30-03:00 |
1 ч 30 мин |
Интервал анализа |
Кол-во запросов |
Ошибки |
Доля ошибок |
Среднее, мс |
95-й процентиль, мс |
99-й процентиль, мс |
|---|---|---|---|---|---|---|
Интервал 1 |
11056777 |
6125 |
0.055% |
281.26 |
739.00 |
917.00 |
Интервал 2 |
11301710 |
6568 |
0.058% |
278.11 |
764.00 |
968.00 |
Этап 3 · 1500 пользователей
Интервал анализа |
Окно анализа |
Длительность |
|---|---|---|
Интервал 1 |
00:00-00:30 |
30 мин |
Интервал 2 |
00:30-01:00 |
30 мин |
Интервал анализа |
Кол-во запросов |
Ошибки |
Доля ошибок |
Среднее, мс |
95-й процентиль, мс |
99-й процентиль, мс |
|---|---|---|---|---|---|---|
Интервал 1 |
2949520 |
1600 |
0.054% |
365.09 |
1073.00 |
1877.00 |
Интервал 2 |
3018289 |
3875 |
0.128% |
500.10 |
1502.00 |
2202.00 |
Этап 4 · 750 пользователей
Интервал анализа |
Окно анализа |
Длительность |
|---|---|---|
Интервал 1 |
00:00-01:30 |
1 ч 30 мин |
Интервал 2 |
01:30-03:00 |
1 ч 30 мин |
Интервал анализа |
Кол-во запросов |
Ошибки |
Доля ошибок |
Среднее, мс |
95-й процентиль, мс |
99-й процентиль, мс |
|---|---|---|---|---|---|---|
Интервал 1 |
10514659 |
5589 |
0.053% |
364.18 |
1002.00 |
1395.00 |
Интервал 2 |
10704289 |
7161 |
0.067% |
362.63 |
991.00 |
1298.00 |
Стабильность работы сервера аутентификации#
Показатель |
1200 |
600 |
1500 |
750 |
|---|---|---|---|---|
Полнота прогона |
полный |
полный |
полный |
полный |
Длительность основного интервала измерений, с |
3600 |
10800 |
3600 |
10800 |
Итоговая оценка качества |
успешно |
успешно |
успешно |
успешно |
Ошибки нагрузки |
5616 |
12693 |
5475 |
12750 |
Всего рестартов IDP |
0 |
0 |
0 |
0 |
Среднее число HTTP-запросов в секунду |
1924.06 |
2070.23 |
1657.72 |
1964.72 |
Пиковое число HTTP-запросов в секунду |
2679.00 |
2586.00 |
2628.00 |
2550.00 |
Пиковая загрузка CPU нод Blitz IDP, % |
95.05 |
95.34 |
94.86 |
94.93 |
Пиковое использование RAM нод Blitz IDP, GiB |
7.52 |
7.51 |
7.57 |
7.57 |
Пиковая загрузка CPU ноды инфраструктуры, % |
30.80 |
61.68 |
49.38 |
49.11 |
Пиковое использование RAM ноды инфраструктуры, GiB |
3.55 |
3.74 |
3.78 |
3.75 |
Пиковая загрузка CPU ноды генератора, % |
77.24 |
76.29 |
77.98 |
75.33 |
Пиковое использование RAM ноды генератора, GiB |
5.17 |
5.07 |
5.23 |
5.10 |
Пиковое заполнение JVM heap IDP, % |
88.25 |
88.94 |
80.41 |
82.73 |
Пиковый GC pause IDP, мс |
620.00 |
671.00 |
457.00 |
605.00 |
Пиковое число соединений PostgreSQL |
591.00 |
595.00 |
594.00 |
595.00 |
Графики#
Графики сравнения
Эти графики нужны для прямого сравнения уровней нагрузки между собой и поэтому упорядочены по количеству пользователей, а не по хронологии этапов.
Графики по временным интервалам
Эти графики показывают динамику внутри этапов сценария в хронологическом порядке интервалов анализа.
Заключение#
Система выдержала полный многоэтапный сценарий нагрузки общей
длительностью 8 ч.
Максимальный уровень нагрузки в серии составил 1500 потоков.
На этом этапе система обеспечила в среднем 1657.72
HTTP-запросов в секунду, что соответствует примерно 331.87
аутентификациям в секунду.
На максимальном уровне нагрузки средний отклик составил 433.76
мс, средняя длительность полного входа — 2165.48 мс, доля
ошибок — 0.092%.
Рестартов Blitz IDP за всю серию не зафиксировано.