Результаты нагрузочного тестирования#
Отчёт объединяет результаты одного многоэтапного нагрузочного сценария и показывает, как Blitz Identity Provider ведёт себя при последовательной смене уровней нагрузки. Основная цель — зафиксировать устойчивость системы на длительной серии этапов, а также отдельно показать сравнительные показатели для каждого уровня нагрузки.
Режим запуска: многоэтапный
Версия Blitz:
5.33.3-releaseКоличество этапов в серии: 4
Уровни нагрузки в серии: 1200, 600, 1500, 750 потоков
Общая длительность основной нагрузки: 8 ч
Полная длительность сценария с разогревом: 8 ч 10 мин
Интерпретация нагрузки: 1 поток ~= 1 параллельный пользователь
Последовательность этапов:
этап 1 — 1200 потоков, 1 ч
этап 2 — 600 потоков, 3 ч
этап 3 — 1500 потоков, 1 ч
этап 4 — 750 потоков, 3 ч
Методика тестирования#
Тестовый стенд#
Компоненты
Компоненты |
Назначение |
Инстансы |
Ресурсный профиль |
Размещение |
|---|---|---|---|---|
nginx |
Балансировщик нагрузки |
|
2 ядра ЦПУ, 2 ГБ ОЗУ на инстанс |
|
blitz-idp |
Балансировщик нагрузки |
|
8 ядер ЦПУ, 8 ГБ ОЗУ на инстанс |
|
PostgreSQL |
Балансировщик нагрузки |
|
6 ядер ЦПУ, 12 ГБ ОЗУ на инстанс |
|
memcached |
Балансировщик нагрузки |
|
1 ядро ЦПУ, 1 ГБ ОЗУ на инстанс |
|
389 Directory Server |
Балансировщик нагрузки |
|
6 ядер ЦПУ, 6 ГБ ОЗУ на инстанс |
|
JMeter |
Балансировщик нагрузки |
|
2 ядра ЦПУ, 2.4 ГБ ОЗУ на инстанс |
|
ВМ
ВМ |
Роль |
Ресурсы |
Хост |
|---|---|---|---|
ВМ Blitz #1 |
blitz-idp |
8 ядер ЦПУ, 15.7 ГБ ОЗУ |
|
ВМ Blitz #2 |
blitz-idp |
8 ядер ЦПУ, 15.7 ГБ ОЗУ |
|
ВМ инфраструктуры |
PostgreSQL / memcached / 389 Directory Server / nginx |
16 ядер ЦПУ, 31.1 ГБ ОЗУ |
|
ВМ генератора нагрузки |
JMeter |
8 ядер ЦПУ, 15.7 ГБ ОЗУ |
|
Процесс аутентификации#
Тестовый процесс аутентификации состоял из следующих типов запросов:
Запрос входа - инициализация аутентификации посредством вызова сервис /ae
Получение страницы входа – открытие страницы входа
Проверка логина и пароля – обращение к хранилищу для проверки логина и пароля
Получение маркера доступа – обращение к сервису /te для получения маркера доступа (access_token)
Получение данных пользователя – вызов сервиса /me для получения данных пользователя
Выход - завершение пользовательской сессии после успешного входа
Сценарий тестирования#
Серия моделирует один длительный рабочий цикл стенда, в котором уровни нагрузки последовательно меняются по заранее заданному сценарию:
Разогрев: 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 для измерения количества запросов, времени отклика, доли ошибок и фактического числа запросов в секунду.
Метрики сервисов Blitz для мониторинга состояния модулей аутентификации и внутренних пулов соединений.
JVM-метрики для мониторинга заполнения heap и паузы сборщика мусора.
Инфраструктурные метрики для измерения загрузки ЦПУ и памяти на ВМ Blitz, инфраструктуры и генератора нагрузки.
Служебные показатели PostgreSQL и LDAP для мониторинга работы СУБД и хранилища.
Основные результаты тестирования#
Результаты по этапам сценария#
Сначала приведены сводные показатели по каждому этапу сценария, а затем — детальные метрики по отдельным операциям аутентификации.
Этап |
Потоки |
Длительность |
Среднее кол-во HTTP-запросов/сек |
Среднее кол-во завершенных входов/сек |
Средний отклик, мс |
Средняя длительность полного входа, мс |
Доля ошибок |
Рестарты blitz-idp |
Итоговая оценка качества |
|---|---|---|---|---|---|---|---|---|---|
Этап 1 |
1200 |
1 ч |
1812.93 |
363.14 |
547 |
2732 |
0.106% |
0 |
успешно |
Этап 2 |
600 |
3 ч |
1929.74 |
386.32 |
300 |
1497 |
0.056% |
0 |
успешно |
Этап 3 |
1500 |
1 ч |
1570.68 |
314.60 |
572 |
2854 |
0.117% |
0 |
успешно |
Этап 4 |
750 |
3 ч |
1894.25 |
379.25 |
376 |
1877 |
0.064% |
0 |
успешно |
Детальные показатели по операциям
Таблицы ниже показывает показатели по ключевым шагам аутентификации для каждого этапа:
Avg – среднее время отклика;
p95 – 95-й перцентиль;
p99 – 99-й перцентиль.
Инициализация аутентификации
Этап |
Avg, msAvg, ms |
p95, ms |
p99, ms |
|---|---|---|---|
Этап 1 · 1200 потоков |
262 |
846 |
1408 |
Этап 2 · 600 потоков |
76 |
300 |
491 |
Этап 3 · 1500 потоков |
485 |
1676 |
2797 |
Этап 4 · 750 потоков |
99 |
392 |
630 |
Получение страницы логина
Этап |
Avg, msAvg, ms |
p95, ms |
p99, ms |
|---|---|---|---|
Этап 1 · 1200 потоков |
1100 |
1893 |
2202 |
Этап 2 · 600 потоков |
605 |
1016 |
1208 |
Этап 3 · 1500 потоков |
980 |
2115 |
2861 |
Этап 4 · 750 потоков |
793 |
1300 |
1566 |
Проверка логина и пароля
Этап |
Avg, msAvg, ms |
p95, ms |
p99, ms |
|---|---|---|---|
Этап 1 · 1200 потоков |
787 |
1380 |
1656 |
Этап 2 · 600 потоков |
493 |
816 |
974 |
Этап 3 · 1500 потоков |
801 |
1725 |
2284 |
Этап 4 · 750 потоков |
606 |
994 |
1212 |
Получение маркера доступа
Этап |
Avg, msAvg, ms |
p95, ms |
p99, ms |
|---|---|---|---|
Этап 1 · 1200 потоков |
279 |
579 |
803 |
Этап 2 · 600 потоков |
158 |
331 |
467 |
Этап 3 · 1500 потоков |
285 |
661 |
935 |
Этап 4 · 750 потоков |
183 |
383 |
552 |
Получение данных пользователя
Этап |
Avg, msAvg, ms |
p95, ms |
p99, ms |
|---|---|---|---|
Этап 1 · 1200 потоков |
305 |
636 |
868 |
Этап 2 · 600 потоков |
166 |
345 |
467 |
Этап 3 · 1500 потоков |
303 |
706 |
996 |
Этап 4 · 750 потоков |
196 |
404 |
578 |
Усредненное время выполнения операций
Этап |
Avg, msAvg, ms |
p95, ms |
p99, ms |
средняя длительность полного входа, мс |
|---|---|---|---|---|
Этап 1 · 1200 потоков |
547 |
1067 |
1387 |
2732 |
Этап 2 · 600 потоков |
300 |
562 |
724 |
1497 |
Этап 3 · 1500 потоков |
571 |
1377 |
1975 |
2854 |
Этап 4 · 750 потоков |
375 |
695 |
908 |
1877 |
Усредненное время выполнения операции — среднее арифметическое по пяти основным шагам базового сценария аутентификации: инициализация аутентификации, получение страницы логина, проверка логина и пароля, получение маркера доступа и получение данных пользователя.
Средняя длительность полного входа — сумма средних времен пяти основных шагов: Запрос входа, Получение страницы входа, Проверка логина и пароля, Получение маркера доступа, Получение данных пользователя.
Сравнение уровней нагрузки
Параллельные пользователи |
Среднее кол-во HTTP-запросов/сек |
Средний отклик, мс |
Средняя длительность полного входа, мс |
Доля ошибок, % |
Относительное кол-во запросов, % |
Относительное время отклика, % |
Относительная длительность полного входа, % |
|---|---|---|---|---|---|---|---|
600 (базовая нагрузка) |
1929.74 |
300 |
1497 |
0.056% |
100 |
100 |
100 |
750 |
1894.25 |
376 |
1877 |
0.064% |
98 |
125 |
125 |
1200 |
1812.93 |
547 |
2732 |
0.106% |
94 |
183 |
182 |
1500 |
1570.68 |
572 |
2854 |
0.117% |
81 |
191 |
191 |
Время выполнения основных операций
Этап 1 · 1200 потоков
Операция |
Кол-во запросов |
Ошибки |
Доля ошибок |
AVG, ms |
p95, ms |
p99, ms |
|---|---|---|---|---|---|---|
Запрос входа |
1307316 |
0 |
0.000% |
262 |
846 |
1408 |
Получение данных пользователя |
1301027 |
630 |
0.048% |
305 |
636 |
868 |
Получение страницы входа |
1307265 |
0 |
0.000% |
1100 |
1893 |
2202 |
Проверка логина и пароля |
1307499 |
4010 |
0.307% |
787 |
1380 |
1656 |
Получение маркера доступа |
1303438 |
2277 |
0.175% |
279 |
579 |
803 |
Этап 2 · 600 потоков
Операция |
Кол-во запросов |
Ошибки |
Доля ошибок |
AVG, ms |
p95, ms |
p99, ms |
|---|---|---|---|---|---|---|
Запрос входа |
4172210 |
4 |
0.000% |
76 |
300 |
491 |
Получение данных пользователя |
4160991 |
455 |
0.011% |
166 |
345 |
480 |
Получение страницы входа |
4172110 |
0 |
0.000% |
605 |
1016 |
1208 |
Проверка логина и пароля |
4172232 |
8591 |
0.206% |
493 |
816 |
974 |
Получение маркера доступа |
4163695 |
2617 |
0.063% |
158 |
331 |
467 |
Этап 3 · 1500 потоков
Операция |
Кол-во запросов |
Ошибки |
Доля ошибок |
AVG, ms |
p95, ms |
p99, ms |
|---|---|---|---|---|---|---|
Запрос входа |
1132545 |
1 |
0.000% |
485 |
1676 |
2797 |
Получение данных пользователя |
1126891 |
894 |
0.079% |
303 |
706 |
996 |
Получение страницы входа |
1132887 |
0 |
0.000% |
980 |
2115 |
2861 |
Проверка логина и пароля |
1132821 |
3317 |
0.293% |
801 |
1725 |
2284 |
Получение маркера доступа |
1129316 |
2380 |
0.211% |
285 |
661 |
935 |
Этап 4 · 750 потоков
Операция |
Кол-во запросов |
Ошибки |
Доля ошибок |
AVG, ms |
p95, ms |
p99, ms |
|---|---|---|---|---|---|---|
Запрос входа |
4095850 |
4 |
0.000% |
99 |
392 |
630 |
Получение данных пользователя |
4083549 |
769 |
0.019% |
196 |
404 |
578 |
Получение страницы входа |
4095548 |
0 |
0.000% |
793 |
1300 |
1566 |
Проверка логина и пароля |
4095681 |
8696 |
0.212% |
606 |
994 |
1212 |
Получение маркера доступа |
4087240 |
3614 |
0.088% |
183 |
383 |
552 |
Результаты по временным интервалам
Каждый этап разбит на временные интервалы для анализа изменения показателей внутри каждого этапа.
Этап 1 · 1200 потоков
Интервал анализа |
Окно анализа |
Длительность |
|---|---|---|
Интервал 1 |
00:00-00:30 |
30 мин |
Интервал 2 |
00:30-01:00 |
30 мин |
Интервал анализа |
Кол-во запросов |
Ошибки |
Доля ошибок |
AVG, ms |
p95, ms |
p99, ms |
|---|---|---|---|---|---|---|
Интервал 1 |
3289139 |
2950 |
0.090% |
533 |
1442 |
1822 |
Интервал 2 |
3237406 |
3967 |
0.123% |
561 |
1557 |
1984 |
Этап 2 · 600 потоков
Интервал анализа |
Окно анализа |
Длительность |
|---|---|---|
Интервал 1 |
00:00-01:30 |
1 ч 30 мин |
Интервал 2 |
01:30-03:00 |
1 ч 30 мин |
Интервал анализа |
Кол-во запросов |
Ошибки |
Доля ошибок |
AVG, ms |
p95, ms |
p99, ms |
|---|---|---|---|---|---|---|
Интервал 1 |
10490126 |
5849 |
0.056% |
295 |
791 |
996 |
Интервал 2 |
10351112 |
5818 |
0.056% |
305 |
830 |
1067 |
Этап 3 · 1500 потоков
Интервал анализа |
Окно анализа |
Длительность |
|---|---|---|
Интервал 1 |
00:00-00:30 |
30 мин |
Интервал 2 |
00:30-01:00 |
30 мин |
Интервал анализа |
Кол-во запросов |
Ошибки |
Доля ошибок |
AVG, ms |
p95, ms |
p99, ms |
|---|---|---|---|---|---|---|
Интервал 1 |
2743670 |
2560 |
0.093% |
506 |
1509 |
2254 |
Интервал 2 |
2910790 |
4032 |
0.139% |
633 |
1797 |
2496 |
Этап 4 · 750 потоков
Интервал анализа |
Окно анализа |
Длительность |
|---|---|---|
Интервал 1 |
00:00-01:30 |
1 ч 30 мин |
Интервал 2 |
01:30-03:00 |
1 ч 30 мин |
Интервал анализа |
Кол-во запросов |
Ошибки |
Доля ошибок |
AVG, ms |
p95, ms |
p99, ms |
|---|---|---|---|---|---|---|
Интервал 1 |
9950733 |
6349 |
0.064% |
386 |
1076 |
1392 |
Интервал 2 |
10507135 |
6734 |
0.064% |
366 |
996 |
1246 |
Стабильность работы сервера аутентификации#
Показатель |
1200 |
600 |
1500 |
750 |
|---|---|---|---|---|
Полнота прогона |
полный |
полный |
полный |
полный |
Длительность основного интервала измерений, с |
3600 |
10800 |
3600 |
10800 |
Итоговая оценка качества |
успешно |
успешно |
успешно |
успешно |
Ошибки нагрузки |
6917 |
11667 |
6592 |
13083 |
Всего рестартов IDP |
0 |
0 |
0 |
0 |
Среднее кол-во HTTP-запросов в секунду |
1812.93 |
1929.74 |
1570.68 |
1894.25 |
Пиковое кол-во HTTP-запросов в секунду |
2559.00 |
2515.00 |
2541.00 |
2545.00 |
Пиковая загрузка ЦПУ ВМ blitz-idp, % |
95.24 |
95.29 |
94.40 |
95.53 |
Пиковое использование ОЗУ ВМ blitz-idp, ГБ |
7.43 |
7.41 |
7.47 |
7.49 |
Пиковая загрузка ЦПУ ВМ инфраструктуры, % |
31.74 |
57.07 |
46.52 |
47.32 |
Пиковое использование ОЗУ ВМ инфраструктуры, ГБ |
3.58 |
3.76 |
3.79 |
3.86 |
Пиковая загрузка ЦПУ ВМ генератора, % |
76.70 |
75.37 |
77.86 |
74.99 |
Пиковое использование ОЗУ ВМ генератора, ГБ |
5.16 |
5.05 |
5.26 |
5.10 |
Пиковое заполнение JVM heap IDP, % |
87.42 |
87.79 |
76.94 |
84.20 |
Пиковый GC pause IDP, мс |
448 |
431 |
455 |
413 |
Пиковое кол-во соединений PostgreSQL |
591.00 |
595.00 |
595.00 |
595.00 |
Графики#
Показатели системы при разной нагрузке
Показатели системы по временным интервалам
Заключение#
Ключевые результаты проведенного тестирования:
1500 потоков - максимальный уровень нагрузки.
1571 запрос в секунду – средняя производительность при максимальной нагрузке
315 аутентификаций в секунду при максимальной нагрузке
572 мс – средний отклик
2854 мс - средняя длительность полного входа
Ошибки в работе системы практически отсутствовали (0,12%)