Обзор бенчмарков
Бенчмарки разделены на четыре категории, каждая из которых измеряет определенный аспект производительности и надежности.
Категории
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 |