Нефункциональные особенности#
Критерии успешности проведения тестов#
Продукт обеспечивает максимальную производительность на уровне профиля нагрузки.
Интенсивность операций соответствует профилю нагрузки.
Отсутствуют ошибочные операции.
Отсутствуют накопления запросов чтения-записи к системе хранения.
Сетевой трафик соответствует уровню подаваемой нагрузки.
Утилизация ресурсов не превышает значений:
Параметры |
Пороговое значение |
|---|---|
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 (последняя ступень нагрузки, на которой не будут нарушены критерии успешности). |
|
Пошаговое увеличение нагрузки происходит до тех пор, пока не нарушится критерий успешности |
Тест подтверждения максимума |
Зафиксировать максимальный уровень нагрузки Lmax |
|
1 час |
Тест надежности |
Зафиксировать отсутствие утечки ресурсов и деградации производительности |
|
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 мс |





