Перейти к содержанию

Обзор бенчмарков

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

Категории

1. Throughput (Пропускная способность)

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

Что измеряем:

  • messages_per_second — сообщений в секунду
  • latency_p50/p95/p99 — задержка на одно сообщение

Тесты:

Тест Потоков Сообщений Цель
test_publish_throughput 10-100 1K-10K Базовая пропускная способность
test_publish_throughput_stress 300-900 9K-15K Стресс-тест
test_channel_pool_throughput 100-500 5K-25K Производительность пула каналов

Подробнее →


2. Scalability (Масштабируемость)

Измеряет способность системы справляться с ростом нагрузки.

Что измеряем:

  • Throughput при росте числа потоков
  • Деградация latency при росте нагрузки
  • Время запуска большого числа консьюмеров

Тесты:

Тест Консьюмеров Сообщений Цель
test_massive_consumers_stress 100 1000 Умеренная нагрузка
test_massive_consumers_stress 500 2000 Высокая нагрузка
test_massive_consumers_stress 900 3000 Экстремальная нагрузка

Подробнее →


3. Recovery (Восстановление)

Измеряет скорость обнаружения сбоев и восстановления после них.

Что измеряем:

  • error_detection_latency — время обнаружения сбоя
  • error_propagation_latency — время распространения ошибки на все потоки
  • full_recovery_latency — полное время восстановления

Типы сбоев:

Тип сбоя Симуляция Описание
TCP RST toxic_reset_peer Сброс соединения (crash RabbitMQ)
Network Partition toxic_timeout Разрыв сети (отключение кабеля)
Degraded + Failure toxic_latency + reset Медленная сеть → сбой

Подробнее →


4. Stability (Стабильность)

Проверяет отсутствие дедлоков, потерь данных и race conditions.

Что проверяем:

  • Отсутствие дедлоков (все потоки завершаются)
  • Отсутствие потерянных фреймов
  • Отсутствие двойного освобождения каналов
  • Отсутствие KeyError: None регрессии

Тесты:

Тест Потоков Особенность
test_chaos_no_deadlock 10-50 Случайные операции
test_chaos_with_connection_kills 20-50 + периодические разрывы
test_high_contention_stress 100-500 Высокая конкуренция
test_repeated_recovery_stress 1000 итераций Многократное восстановление

Подробнее →


Зависимости между тестами

┌─────────────────────────────────────────────────────────────────┐
│                        Throughput                                │
│                    (базовая метрика)                            │
└──────────────────────────┬──────────────────────────────────────┘
        ┌──────────────────┼──────────────────┐
        ▼                  ▼                  ▼
┌───────────────┐  ┌───────────────┐  ┌───────────────┐
│  Scalability  │  │   Recovery    │  │   Stability   │
│ (throughput   │  │ (throughput   │  │ (throughput   │
│  под нагрузкой)│  │  при сбоях)   │  │  без ошибок)  │
└───────────────┘  └───────────────┘  └───────────────┘

Target Metrics

Метрика Цель Текущее значение
Throughput (100 threads) > 10,000 msg/s ✅ 19,157 msg/s
Throughput (900 threads) > 1,000 msg/s ⚠️ 988 msg/s
Latency P99 < 50ms ✅ 12.88ms
TCP RST Recovery < 10ms ✅ 0.48ms
Network Partition Recovery < 100ms ✅ 9.55ms
Deadlocks 0 ✅ 0
Lost Frames 0 ✅ 0