Вопрос проверяет понимание ограничений синхронной модели исполнения и того, как блокирующие I/O-вызовы “съедают” ресурсы воркеров.
Синхронный фреймворк обрабатывает запрос, блокируясь на каждом внешнем вызове. Пока он ждёт сеть или базу, воркер не может обслуживать другие запросы. При росте нагрузки быстро заканчиваются воркеры/потоки, и очередь запросов растёт, увеличивая latency и timeouts. Добавление воркеров помогает до определённого момента, но затем упирается в память и накладные расходы. Поэтому при большом числе внешних вызовов синхронная модель часто деградирует.
Суть проблемы: при большом количестве внешних вызовов время ответа становится суммой ожиданий, а синхронный воркер всё это время занят.
Синхронная обработка — модель, где выполнение запроса идёт последовательно, и I/O-вызовы блокируют текущий поток/воркер до завершения.
Сначала один воркер “держит” запрос, пока ждёт сеть/БД. Затем при росте RPS:
Воркеры исчерпываются
каждый запрос занимает воркер на долгое время (ожидания внешних систем)
Очередь растёт
новые запросы ждут свободный воркер
Latency взлетает
даже быстрые запросы становятся медленными из-за очереди
Timeout cascade
клиент отваливается по таймауту, но воркер продолжает работу
появляются ретраи → нагрузка растёт ещё сильнее
Перед перечислением зафиксируем: масштабирование воркеров полезно, но имеет предел.
Память
процессы/потоки требуют памяти (стек, объекты, буферы)
Context switching
слишком много потоков → расходы на переключение контекста
Сопутствующие лимиты
соединения к БД, file descriptors, лимиты внешних API
def handler():
r1 = http_call_1() # блокирует
r2 = http_call_2() # блокирует
return merge(r1, r2)
Даже если CPU почти не используется, воркер “занят” ожиданием.
Асинхронные клиенты/драйверы и event loop
Параллелизация внешних вызовов (с лимитами)
Кеширование и батчинг
Очереди/фоновые задачи для долгих операций
Синхронный фреймворк плохо держит высокую нагрузку при множестве внешних вызовов, потому что воркеры массово блокируются на ожидании, и система начинает жить в режиме очередей и таймаутов.