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

Отчёт объединяет результаты одного многоэтапного нагрузочного сценария и показывает, как 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

Балансировщик нагрузки

1

2 ядра ЦПУ, 2 ГБ ОЗУ на инстанс

ВМ инфраструктуры

blitz-idp

Балансировщик нагрузки

2

8 ядер ЦПУ, 8 ГБ ОЗУ на инстанс

ВМ Blitz

PostgreSQL

Балансировщик нагрузки

1

6 ядер ЦПУ, 12 ГБ ОЗУ на инстанс

ВМ инфраструктуры

memcached

Балансировщик нагрузки

2

1 ядро ЦПУ, 1 ГБ ОЗУ на инстанс

ВМ инфраструктуры

389 Directory Server

Балансировщик нагрузки

1

6 ядер ЦПУ, 6 ГБ ОЗУ на инстанс

ВМ инфраструктуры

JMeter

Балансировщик нагрузки

3

2 ядра ЦПУ, 2.4 ГБ ОЗУ на инстанс

ВМ генератора нагрузки

ВМ

ВМ

Роль

Ресурсы

Хост

ВМ Blitz #1

blitz-idp

8 ядер ЦПУ, 15.7 ГБ ОЗУ

infra-dk3s02.reaxoft.loc

ВМ Blitz #2

blitz-idp

8 ядер ЦПУ, 15.7 ГБ ОЗУ

infra-dk3s03.reaxoft.loc

ВМ инфраструктуры

PostgreSQL / memcached / 389 Directory Server / nginx

16 ядер ЦПУ, 31.1 ГБ ОЗУ

infra-dk3s05.reaxoft.loc

ВМ генератора нагрузки

JMeter

8 ядер ЦПУ, 15.7 ГБ ОЗУ

infra-dk3s04.reaxoft.loc

Процесс аутентификации#

Тестовый процесс аутентификации состоял из следующих типов запросов:

  • Запрос входа - инициализация аутентификации посредством вызова сервис /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

нет

Схема стенда#

_images/image1.png

Базовая конфигурация#

Компонент

Параметр

Значение

blitz-idp

Internal stores

profile=jdbc , default-type=jdbc

blitz-idp

Java options

-server, -Xms4g, -Xmx4g, -XX:MaxMetaspaceSize=1g

blitz-idp

LDAP pool

initialConnections=60, maxConnections=60, connectionTimeout=3000, responseTimeout=3000

blitz-idp

JDBC pool

maxIdleConn=220, maxTotalConn=220, maxWaitConnMs=5000, minIdleConn=150, maxConnLifetimeMillis=1800000

JMeter

Logout after login

enabled=false, percent=10, timeout-ms=0

389 Directory Server

Тюнинг LDAP

threadnumber=-1, numlisteners=4, maxthreadsperconn=16

nginx

Upstream blitz-idp

keepalive=256, keepalive_requests=10000, keepalive_timeout=120s

Инструменты мониторинга#

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

  • 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

Графики#

Показатели системы при разной нагрузке

_images/image2.png _images/image3.png _images/image4.png _images/image5.png _images/image6.png _images/image7.png

Показатели системы по временным интервалам

_images/image8.png _images/image9.png

Заключение#

Ключевые результаты проведенного тестирования:

  • 1500 потоков - максимальный уровень нагрузки.

  • 1571 запрос в секунду – средняя производительность при максимальной нагрузке

  • 315 аутентификаций в секунду при максимальной нагрузке

  • 572 мс – средний отклик

  • 2854 мс - средняя длительность полного входа

  • Ошибки в работе системы практически отсутствовали (0,12%)