Нефункциональные особенности#

Критерии успешности проведения тестов#

  • Продукт обеспечивает максимальную производительность на уровне профиля нагрузки.

  • Интенсивность операций соответствует профилю нагрузки.

  • Отсутствуют ошибочные операции.

  • Отсутствуют накопления запросов чтения-записи к системе хранения.

  • Сетевой трафик соответствует уровню подаваемой нагрузки.

  • Утилизация ресурсов не превышает значений:

Параметры

Пороговое значение

CPU

80%

RAM

80%

HDD

80%

Конфигурация тестового стенда для нагрузочного тестирования#

Аппаратная часть#

Номер хоста

Ядра процессора (CPU)

Память (RAM)

Роль

Диск

1

2

16 ГБ

Брокер

HDD 250 GB

2

2

16 ГБ

Брокер

HDD 250 GB

3

2

16 ГБ

Брокер

HDD 250 GB

4

4

8 ГБ

Consumer service

HDD 170 GB

5

4

8 ГБ

Producer service

HDD 170 GB

Системное программное обеспечение#

Категория ПО

Наименование ПО

Версия

Обязательность установки

Операционная система

Альт 8 СП Сервер

8.4

Да

Вычислительная платформа

OpenJDK

17.0.11

Да

Конфигурация Corax#

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

Элемент

Параметр

Конфигурация

Брокер

Количество брокеров

3

Количество топиков

1

security.protocol

SSL

Topic

Количествово партиций

20

Фактор репликации

3

cleanup.policy

delete

compression.type

producer

delete.retention.ms

3600000

file.delete.delay.ms

60000

flush.messages

9223372036854775807

flush.ms

9223372036854775807

index.interval.bytes

4096

max.compaction.lag.ms

9223372036854775807

max.message.bytes

5242880

message.downconversion.enable

true

message.format.version

3.0-IV1

message.timestamp.difference.max.ms

9223372036854775807

message.timestamp.type

CreateTime

min.cleanable.dirty.ratio

0.5

min.compaction.lag.ms

0

min.insync.replicas

1

preallocate

false

records.policy.enabled

false

retention.bytes

-1

retention.ms

300000

segment.bytes

1073741824

segment.index.bytes

10485760

segment.jitter.ms

0

segment.ms

600000

unclean.leader.election.enable

false

Производитель

Размер сообщения

10000 byte

acks

1

batch.size

2097152

buffer.memory

33554432

key.serializer

org.apache.kafka.common.serialization.StringSerializer

value.serializer

org.apache.kafka.common.serialization.StringSerializer

security.protocol

SSL

Потребитель

Количество потребителей

20

auto.commit.interval.ms

1000

auto.offset.reset

earliest

enable.auto.commit

true

key.deserializer

org.apache.kafka.common.serialization.StringDeserializer

value.deserializer

org.apache.kafka.common.serialization.StringDeserializer

security.protocol

SSL

Сценарии нагрузочного тестирования#

Corax тестируется по трем сценариям нагрузки:

Вид тестирования

Цель

Сценарий теста

Время

Тест определения максимальной производительности

Определить уровень нагрузки L0 (последняя ступень нагрузки, на которой не будут нарушены критерии успешности).

  1. Установка нужной конфигурации.

  2. Запуск генерации нагрузки с профилем 1000 tps.

  3. Удержание нагрузки в течении 5 минут.

  4. Поднятие интенсивности на 1000 tps в течение 5 минут.

  5. Удержание нагрузки в течении 5 минут.

  6. Повторение шагов 4 и 5 до момента полной или частичной деградации производительности системы

Пошаговое увеличение нагрузки происходит до тех пор, пока не нарушится критерий успешности

Тест подтверждения максимума

Зафиксировать максимальный уровень нагрузки Lmax

  1. Установка нужной конфигурации.

  2. Запуск генерации нагрузки на уровне 90% от L0.

  3. Удержание нагрузки в течение 1 часа

1 час

Тест надежности

Зафиксировать отсутствие утечки ресурсов и деградации производительности

  1. Установка нужной конфигурации.

  2. Запуск генерации нагрузки на уровне 75% от L0.

  3. Удержание нагрузки в течение 24 часов

24 часа

Профиль нагрузки#

Название

Описание

Интерфейс

Транзакций в секунду

Тест определения максимума

Тест подтверждения максимума

Тест надежности

ProducerSendMsg

Запись сообщения в брокер

Kafka Producer

от 1000 до момента полной или частичной деградации производительности системы

10800

9000

ConsumerPullMsg

Чтение сообщения из брокера

Kafka Consumer

Максимально быстро

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

В таблицах ниже приведены метрики Gatling для доказательства подаваемой интенсивности и среднего времени отклика (99 перцентиль).

Тест определения максимальной производительности#

Название метрики

График

Комментарий

Подаваемая интенсивность, tps

Определен уровень нагрузки L0, который соответствует 12000 tps

Среднее время отклика (99 перцентиль), мс

Среднее время отклика составляет 50-70 мс

Тест подтверждения максимума#

Название метрики

График

Комментарий

Подаваемая интенсивность, tps

Фактическая средняя интенсивность соответствует заявленной — 10800 tps (90% от L0)

Среднее время отклика (99 перцентиль), мс

Среднее время отклика - на уровне 50-70 мс

Тест надежности#

Название метрики

График

Комментарий

Подаваемая интенсивность, tps

Фактическая средняя интенсивность соответствует заявленной — 9000 транзакций в секунду (75% от L0)

Среднее время отклика (99 перцентиль), мс

Среднее время отклика — на уровне 50-70 мс