Результаты нагрузочного тестирования#
Введение#
Отчёт объединяет результаты одного многоэтапного нагрузочного сценария и показывает, как Blitz Identity Provider ведёт себя при последовательной смене уровней нагрузки. Основная цель — зафиксировать устойчивость системы на длительной серии этапов, а также отдельно показать сравнительные показатели для каждого уровня нагрузки.
Режим запуска:
многоэтапныйВерсия Blitz:
5.34.8GitLab pipeline ID:
34505Количество прогонов в серии:
4Уровни нагрузки в серии:
1200, 600, 1500, 750параллельных входовОбщая длительность основной нагрузки:
8 чПолная длительность сценария с разогревом:
8 ч 10 минИнтерпретация нагрузки:
1 поток = 1 параллельный входКаждый вход использует следующую учетную запись из пула; за учетной записью закреплено стабильное устройство
Последовательность этапов: этап 1 —
1200параллельных входов,1 ч, этап 2 —600параллельных входов,3 ч, этап 3 —1500параллельных входов,1 ч, этап 4 —750параллельных входов,3 ч.
1. Методика тестирования#
1.1. Тестовый стенд#
Компоненты#
Компонент |
Назначение |
Инстансы |
Ресурсный профиль |
Размещение |
|---|---|---|---|---|
Nginx |
Балансировщик нагрузки |
|
|
|
Blitz IDP |
Сервер аутентификации |
|
|
|
PostgreSQL |
Основное хранилище данных |
|
|
|
Memcached |
Кэш сессий и служебных данных |
|
|
|
389 Directory Server |
LDAP-каталог пользователей |
|
|
|
JMeter |
Генератор нагрузки |
|
|
|
ВМ#
ВМ |
Роль |
Ресурсы |
|---|---|---|
ВМ Blitz #1 |
Blitz IDP |
|
ВМ Blitz #2 |
Blitz IDP |
|
ВМ инфраструктуры |
PostgreSQL / Memcached / 389 Directory Server / Nginx |
|
ВМ генератора нагрузки |
JMeter |
|
1.2. Процесс аутентификации#
Тестовый процесс аутентификации состоял из следующих типов запросов:
LOGIN AE— инициализация аутентификацииLOGIN PAGE— получение страницы логинаLOGIN POST Login— проверка логина и пароля через LDAPLOGIN TE— получение маркера доступаLOGIN ME— получение данных пользователя
1.3. Сценарий тестирования#
Серия моделирует один длительный рабочий цикл стенда, в котором уровни нагрузки последовательно меняются по заранее заданному сценарию.
Разогрев:
10минут один раз перед первым этапом серии. Эта фаза не учитывается в итоговых метриках и итоговой оценке качества.Перед каждым этапом выполняется плавный выход на целевое количество потоков в течение
60секунд. Эта фаза не учитывается в итоговых метриках, графиках и итоговой оценке качества.Фактическая интенсивность запросов не ограничивается искусственно: её определяет сама система под нагрузкой.
Этап |
Потоки |
Длительность |
Инстансы генератора |
Потоков на инстанс |
Разогрев перед этапом |
|---|---|---|---|---|---|
Этап 1 |
1200 |
1 ч |
5 |
240 |
да |
Этап 2 |
600 |
3 ч |
5 |
120 |
нет |
Этап 3 |
1500 |
1 ч |
5 |
300 |
нет |
Этап 4 |
750 |
3 ч |
5 |
150 |
нет |
1.4. Схема стенда#
1.5. Базовая конфигурация#
Компонент |
Параметр |
Значение |
|---|---|---|
Blitz IDP |
Internal stores |
|
Blitz IDP |
Java options |
|
Blitz IDP |
LDAP pool |
|
Blitz IDP |
JDBC pool |
|
389 Directory Server |
LDAP tuning |
|
Nginx |
Blitz IDP upstream |
|
1.6. Инструменты мониторинга#
Для каждого прогона собирались как пользовательские метрики, так и показатели состояния стенда, чтобы сравнение отражало не только время отклика, но и устойчивость работы системы.
JMeter: количество запросов, время отклика, доля ошибок и фактическое число запросов в секунду.
RPS — фактическое число запросов в секунду; в таблицах это показатель пропускной способности стенда.
Метрики сервисов Blitz: состояние модулей аутентификации и внутренних пулов соединений.
JVM-метрики: заполнение heap и паузы сборщика мусора.
Инфраструктурные метрики: загрузка CPU и памяти на ВМ Blitz, инфраструктуры и генератора нагрузки.
PostgreSQL и LDAP: показатели нагрузки, позволяющие понять, не становится ли хранилище узким местом при росте нагрузки.
2. Основные результаты тестирования#
2.1. Результаты по этапам сценария#
Сначала приведены сводные показатели по каждому этапу сценария, а затем — детальные метрики по отдельным операциям аутентификации.
Этап |
Потоки |
Длительность |
Среднее число HTTP-запросов/сек |
Среднее число завершенных входов/сек |
Средний отклик, мс |
Средняя длительность полного входа, мс |
Доля ошибок |
Рестарты IDP |
Итоговая оценка качества |
|---|---|---|---|---|---|---|---|---|---|
Этап 1 |
1200 |
1 ч |
3719.48 |
743.64 |
321.37 |
1606.90 |
0.000% |
0 |
успешно |
Этап 2 |
600 |
3 ч |
3828.14 |
765.57 |
155.83 |
778.95 |
0.001% |
0 |
успешно |
Этап 3 |
1500 |
1 ч |
3726.85 |
745.06 |
399.76 |
1998.86 |
0.000% |
0 |
успешно |
Этап 4 |
750 |
3 ч |
3797.76 |
759.50 |
196.51 |
982.57 |
0.000% |
0 |
успешно |
Детальные показатели по операциям#
Таблица ниже показывает среднее время отклика, медиану, 95-й и 99-й процентили по ключевым шагам аутентификации для каждого этапа сценария.
Показатель |
Метрика |
Этап 1 · 1200 параллельных входов |
Этап 2 · 600 параллельных входов |
Этап 3 · 1500 параллельных входов |
Этап 4 · 750 параллельных входов |
|---|---|---|---|---|---|
Инициализация аутентификации |
Среднее время отклика, мс |
76.67 |
37.85 |
101.39 |
47.45 |
Инициализация аутентификации |
Медиана времени отклика, мс |
51.00 |
21.00 |
71.00 |
31.00 |
Инициализация аутентификации |
95-й процентиль, мс |
226.00 |
105.00 |
284.00 |
127.00 |
Инициализация аутентификации |
99-й процентиль, мс |
341.00 |
212.00 |
418.00 |
255.00 |
Получение страницы логина |
Среднее время отклика, мс |
67.32 |
30.81 |
83.48 |
39.67 |
Получение страницы логина |
Медиана времени отклика, мс |
46.00 |
17.00 |
59.00 |
25.00 |
Получение страницы логина |
95-й процентиль, мс |
211.00 |
103.00 |
246.00 |
120.00 |
Получение страницы логина |
99-й процентиль, мс |
319.00 |
195.00 |
364.00 |
234.00 |
Проверка логина и пароля |
Среднее время отклика, мс |
986.57 |
460.37 |
1232.59 |
579.71 |
Проверка логина и пароля |
Медиана времени отклика, мс |
967.00 |
406.00 |
1213.00 |
534.00 |
Проверка логина и пароля |
95-й процентиль, мс |
1419.00 |
970.00 |
1742.00 |
1064.00 |
Проверка логина и пароля |
99-й процентиль, мс |
1652.00 |
1145.00 |
2013.00 |
1272.00 |
Получение маркера доступа |
Среднее время отклика, мс |
290.95 |
163.05 |
351.86 |
203.00 |
Получение маркера доступа |
Медиана времени отклика, мс |
272.00 |
137.00 |
332.00 |
181.00 |
Получение маркера доступа |
95-й процентиль, мс |
527.00 |
363.00 |
626.00 |
408.00 |
Получение маркера доступа |
99-й процентиль, мс |
666.00 |
470.00 |
788.00 |
531.00 |
Получение данных пользователя |
Среднее время отклика, мс |
184.89 |
86.63 |
228.96 |
112.27 |
Получение данных пользователя |
Медиана времени отклика, мс |
164.00 |
61.00 |
207.00 |
91.00 |
Получение данных пользователя |
95-й процентиль, мс |
387.00 |
235.00 |
462.00 |
268.00 |
Получение данных пользователя |
99-й процентиль, мс |
512.00 |
330.00 |
605.00 |
377.00 |
Усредненное время выполнения операции |
Среднее время отклика, мс |
321.28 |
155.74 |
399.65 |
196.42 |
Усредненное время выполнения операции |
95-й процентиль, мс |
554.00 |
355.20 |
672.00 |
397.40 |
Усредненное время выполнения операции |
99-й процентиль, мс |
698.00 |
470.40 |
837.60 |
533.80 |
Средняя длительность полного входа |
мс |
1606.90 |
778.95 |
1998.86 |
982.57 |
Усредненное время выполнения операции — среднее арифметическое по пяти основным шагам базового сценария аутентификации: инициализация аутентификации, получение страницы логина, проверка логина и пароля, получение маркера доступа и получение данных пользователя.
Средняя длительность полного входа — средняя сумма времени выполнения HTTP-запросов от
LOGIN AEдоLOGIN MEв рамках одной успешной попытки входа.
Сравнение уровней нагрузки#
Параллельные входы |
Среднее число HTTP-запросов/сек |
Средний отклик, мс |
Средняя длительность полного входа, мс |
Доля ошибок |
Относительное число запросов |
Относительное время отклика |
Относительная длительность полного входа |
|---|---|---|---|---|---|---|---|
600 (базовая нагрузка) |
3828.14 |
155.83 |
778.95 |
0.001% |
1.00x |
1.00x |
1.00x |
750 |
3797.76 |
196.51 |
982.57 |
0.000% |
0.99x |
1.26x |
1.26x |
1200 |
3719.48 |
321.37 |
1606.90 |
0.000% |
0.97x |
2.06x |
2.06x |
1500 |
3726.85 |
399.76 |
1998.86 |
0.000% |
0.97x |
2.57x |
2.57x |
Время выполнения основных операций#
Условные обозначения операций: LOGIN AE — инициализация аутентификации; LOGIN PAGE — получение страницы логина; LOGIN POST Login — проверка логина и пароля; LOGIN TE — получение маркера доступа; LOGIN ME — получение данных пользователя.
Этап 1 · 1200 параллельных входов#
Операция |
Кол-во запросов |
Ошибки |
Доля ошибок |
Среднее, мс |
Медиана, мс |
95-й процентиль, мс |
99-й процентиль, мс |
|---|---|---|---|---|---|---|---|
LOGIN AE |
2678194 |
0 |
0.000% |
76.67 |
51.00 |
226.00 |
341.00 |
LOGIN ME |
2678101 |
0 |
0.000% |
184.89 |
164.00 |
387.00 |
512.00 |
LOGIN PAGE |
2678221 |
0 |
0.000% |
67.32 |
46.00 |
211.00 |
319.00 |
LOGIN POST Login |
2677548 |
0 |
0.000% |
986.57 |
967.00 |
1419.00 |
1652.00 |
LOGIN TE |
2678078 |
0 |
0.000% |
290.95 |
272.00 |
527.00 |
666.00 |
Этап 2 · 600 параллельных входов#
Операция |
Кол-во запросов |
Ошибки |
Доля ошибок |
Среднее, мс |
Медиана, мс |
95-й процентиль, мс |
99-й процентиль, мс |
|---|---|---|---|---|---|---|---|
LOGIN AE |
8268994 |
0 |
0.000% |
37.85 |
21.00 |
105.00 |
212.00 |
LOGIN ME |
8268656 |
18 |
0.000% |
86.63 |
61.00 |
235.00 |
330.00 |
LOGIN PAGE |
8268969 |
0 |
0.000% |
30.81 |
17.00 |
103.00 |
195.00 |
LOGIN POST Login |
8268650 |
245 |
0.003% |
460.37 |
406.00 |
970.00 |
1145.00 |
LOGIN TE |
8268641 |
48 |
0.001% |
163.05 |
137.00 |
363.00 |
470.00 |
Этап 3 · 1500 параллельных входов#
Операция |
Кол-во запросов |
Ошибки |
Доля ошибок |
Среднее, мс |
Медиана, мс |
95-й процентиль, мс |
99-й процентиль, мс |
|---|---|---|---|---|---|---|---|
LOGIN AE |
2683568 |
1 |
0.000% |
101.39 |
71.00 |
284.00 |
418.00 |
LOGIN ME |
2683417 |
0 |
0.000% |
228.96 |
207.00 |
462.00 |
605.00 |
LOGIN PAGE |
2683595 |
0 |
0.000% |
83.48 |
59.00 |
246.00 |
364.00 |
LOGIN POST Login |
2682673 |
0 |
0.000% |
1232.59 |
1213.00 |
1742.00 |
2013.00 |
LOGIN TE |
2683392 |
0 |
0.000% |
351.86 |
332.00 |
626.00 |
788.00 |
Этап 4 · 750 параллельных входов#
Операция |
Кол-во запросов |
Ошибки |
Доля ошибок |
Среднее, мс |
Медиана, мс |
95-й процентиль, мс |
99-й процентиль, мс |
|---|---|---|---|---|---|---|---|
LOGIN AE |
8203297 |
1 |
0.000% |
47.45 |
31.00 |
127.00 |
255.00 |
LOGIN ME |
8203250 |
0 |
0.000% |
112.27 |
91.00 |
268.00 |
377.00 |
LOGIN PAGE |
8203268 |
0 |
0.000% |
39.67 |
25.00 |
120.00 |
234.00 |
LOGIN POST Login |
8202883 |
0 |
0.000% |
579.71 |
534.00 |
1064.00 |
1272.00 |
LOGIN TE |
8203153 |
0 |
0.000% |
203.00 |
181.00 |
408.00 |
531.00 |
Результаты по временным интервалам#
Каждый прогон может быть разбит на один или несколько временных интервалов анализа. Они нужны только для отчёта: помогают увидеть, в какой части основного интервала измерений начинается деградация по времени отклика или ошибкам. Это не отдельные сценарии теста и не разные уровни нагрузки внутри одного прогона.
Этап 1 · 1200 параллельных входов#
Интервал анализа |
Окно анализа |
Длительность |
|---|---|---|
Интервал 1 |
00:00-00:30 |
30 мин |
Интервал 2 |
00:30-01:00 |
30 мин |
Интервал анализа |
Кол-во запросов |
Ошибки |
Доля ошибок |
Среднее, мс |
95-й процентиль, мс |
99-й процентиль, мс |
|---|---|---|---|---|---|---|
Интервал 1 |
6628161 |
0 |
0.000% |
324.64 |
1152.00 |
1435.00 |
Интервал 2 |
6761981 |
0 |
0.000% |
317.93 |
1123.00 |
1410.00 |
Этап 2 · 600 параллельных входов#
Интервал анализа |
Окно анализа |
Длительность |
|---|---|---|
Интервал 1 |
00:00-01:30 |
1 ч 30 мин |
Интервал 2 |
01:30-03:00 |
1 ч 30 мин |
Интервал анализа |
Кол-во запросов |
Ошибки |
Доля ошибок |
Среднее, мс |
95-й процентиль, мс |
99-й процентиль, мс |
|---|---|---|---|---|---|---|
Интервал 1 |
20691407 |
311 |
0.002% |
155.58 |
658.00 |
921.00 |
Интервал 2 |
20652503 |
0 |
0.000% |
155.90 |
769.00 |
1010.00 |
Этап 3 · 1500 параллельных входов#
Интервал анализа |
Окно анализа |
Длительность |
|---|---|---|
Интервал 1 |
00:00-00:30 |
30 мин |
Интервал 2 |
00:30-01:00 |
30 мин |
Интервал анализа |
Кол-во запросов |
Ошибки |
Доля ошибок |
Среднее, мс |
95-й процентиль, мс |
99-й процентиль, мс |
|---|---|---|---|---|---|---|
Интервал 1 |
6726454 |
1 |
0.000% |
399.13 |
1418.00 |
1746.00 |
Интервал 2 |
6690191 |
0 |
0.000% |
400.07 |
1410.00 |
1745.00 |
Этап 4 · 750 параллельных входов#
Интервал анализа |
Окно анализа |
Длительность |
|---|---|---|
Интервал 1 |
00:00-01:30 |
1 ч 30 мин |
Интервал 2 |
01:30-03:00 |
1 ч 30 мин |
Интервал анализа |
Кол-во запросов |
Ошибки |
Доля ошибок |
Среднее, мс |
95-й процентиль, мс |
99-й процентиль, мс |
|---|---|---|---|---|---|---|
Интервал 1 |
20526205 |
0 |
0.000% |
196.24 |
716.00 |
1012.00 |
Интервал 2 |
20489646 |
1 |
0.000% |
196.59 |
831.00 |
1105.00 |
2.2. Стабильность работы сервера аутентификации#
Показатель |
1200 |
600 |
1500 |
750 |
|---|---|---|---|---|
Полнота прогона |
полный |
полный |
полный |
полный |
Длительность основного интервала измерений, с |
3600 |
10800 |
3600 |
10800 |
Итоговая оценка качества |
успешно |
успешно |
успешно |
успешно |
Ошибки нагрузки |
0 |
311 |
1 |
1 |
Инстансы IDP с рестартами |
0 из 2 |
0 из 2 |
0 из 2 |
0 из 2 |
Всего рестартов IDP |
0 |
0 |
0 |
0 |
Среднее число HTTP-запросов в секунду |
3719.48 |
3828.14 |
3726.85 |
3797.76 |
Пиковое число HTTP-запросов в секунду |
4254.00 |
4265.00 |
4632.00 |
4268.00 |
Средняя загрузка CPU JMeter от лимита, % |
45.42 |
35.08 |
52.81 |
38.85 |
Периоды ограничения CPU JMeter, % |
10.34 |
2.10 |
18.66 |
4.90 |
Пиковая загрузка CPU нод Blitz IDP, % |
99.82 |
99.82 |
99.77 |
99.83 |
Пиковое использование RAM нод Blitz IDP, GiB |
6.23 |
7.11 |
7.31 |
7.30 |
Пиковая загрузка CPU ноды инфраструктуры, % |
45.33 |
73.17 |
62.75 |
72.65 |
Пиковое использование RAM ноды инфраструктуры, GiB |
3.80 |
3.88 |
4.20 |
4.13 |
Пиковая загрузка CPU ноды генератора, % |
49.19 |
49.43 |
58.88 |
47.92 |
Пиковое использование RAM ноды генератора, GiB |
8.06 |
8.03 |
8.05 |
8.08 |
Пиковое заполнение JVM heap IDP, % |
70.23 |
88.21 |
88.13 |
88.23 |
Пиковый GC pause IDP, мс |
321.00 |
303.00 |
422.00 |
302.00 |
Пиковое число соединений PostgreSQL |
591.00 |
591.00 |
594.00 |
595.00 |
2.3. Графики#
Графики сравнения#
Эти графики нужны для прямого сравнения уровней нагрузки между собой и поэтому упорядочены по количеству параллельных входов, а не по хронологии этапов.
Графики по временным интервалам#
Эти графики показывают динамику внутри этапов сценария в хронологическом порядке интервалов анализа.
3. Заключение#
Система выдержала полный многоэтапный сценарий нагрузки общей длительностью 8 ч.
Максимальный уровень нагрузки в серии составил 1500 потоков. На этом этапе система обеспечила в среднем 3726.85 HTTP-запросов в секунду, что соответствует примерно 745.06 аутентификациям в секунду.
На максимальном уровне нагрузки средний отклик составил 399.76 мс, средняя длительность полного входа — 1998.86 мс, доля ошибок — 0.000%.
Рестартов Blitz IDP за всю серию не зафиксировано.