Thread pool starvation возникает, когда все потоки пула заняты, а новые операции ждут свободного исполнителя. Если занятые задачи сами ждут работу из того же пула, возможна взаимная блокировка.
Что такое Thread Pool Starvation и как оно может заблокировать асинхронное приложение?
Thread pool starvation возникает, когда все потоки пула заняты, а новые операции ждут свободного исполнителя. Если занятые задачи сами ждут работу из того же пула, возможна взаимная блокировка.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Thread pool starvation возникает, когда все потоки пула заняты, а новые операции ждут свободного исполнителя. Если занятые задачи сами ждут работу из того же пула, возможна взаимная блокировка.
В async-приложении это проявляется при массовом выносе синхронного I/O в executor: event loop ещё работает, но нужные ему результаты не появляются. Долгие вызовы без timeout и неограниченная очередь усугубляют проблему. Ограничивают входной параллелизм, разделяют независимые пулы, убирают вложенное блокирующее ожидание и контролируют очередь. Простое увеличение max_workers не решает циклическую зависимость и может перегрузить БД или внешний API.