Этот вопрос проверяет понимание пропускной способности системы и принципов расчета параллелизма.
Количество воркеров оценивают исходя из времени обработки одного сообщения и входящего потока. Если известно, сколько сообщений в секунду приходит и сколько времени обрабатывается одно сообщение, можно приблизительно посчитать необходимый уровень параллелизма. Для I/O-bound задач корутин может быть больше, чем CPU-ядер, а для CPU-bound задач обычно ориентируются на число ядер. После первичной оценки обязательно проводят нагрузочные тесты.
Расчет количества воркеров — это задача оценки пропускной способности системы.
Если:
поток входящих сообщений = R сообщений/сек
время обработки одного сообщения = T секунд
Тогда приблизительное число параллельных обработчиков:
количество воркеров ≈ R × T
Пример:
200 сообщений/сек
обработка 0.05 сек
Нужно около:
200 × 0.05 = 10 воркеров
Важно различать:
I/O-bound задачи
ожидание сети или диска
можно использовать много корутин
CPU-bound задачи
ограничение числом CPU
лучше multiprocessing
Обычно делают:
стартовую оценку
нагрузочное тестирование
постепенное масштабирование
Даже при достаточном числе воркеров bottleneck может быть:
база данных
сеть
сериализация
Вывод
Количество воркеров сначала оценивают по формуле throughput, а затем уточняют экспериментально под реальной нагрузкой.