Чем это грозит в проде?

Ответ

Сценарий: микросервис обрабатывает 1000 RPS обычных запросов. Каждый из них где-то использует parallelStream (агрегация, фильтр коллекции). Все parallelStream делят один общий ForkJoinPool.commonPool() размером примерно (ядра-1), поэтому задачи выстраиваются в очередь, растёт конкуренция за потоки и латентность взлетает, а блокирующие операции внутри стрима могут застопорить весь пул.

Разбор: Все parallelStream по умолчанию делят один общий ForkJoinPool.commonPool() с числом потоков примерно (ядра-1). При 1000 RPS задачи выстраиваются в очередь к этому крошечному пулу, начинается конкуренция за потоки, латентность взлетает, а блокирующие операции внутри стрима могут вообще застопорить весь пул. Ловушка: пул не создаётся на каждый вызов и не масштабируется до RPS — он общий и фиксированный, поэтому проблема именно в насыщении и росте задержек.

Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.

Заказать гайд Пройти тест
новые гайды и свежие вопросы с собесов — первыми в Telegram Смотреть гайды Подписаться