@lucky4

Как работает пул потоков при ассинхронных запросах?

Как работает пул потоков(если он существует для асинхронных операций) для обработки веб-серверных запросов.

К примеру, есть частая ситуация:
В какой-то момент в приложение стучатся 10'000 тысяч человек на аутентификацию, вызывая метод контроллера Login.
Правильно ли я понимаю, что при асинхронности у нас есть пул потоков которые обрабатывают каждый запрос? Но, а как быть если значение максимально допустимого количества потоков в пуле может изменяться. В случае двуядерного ЦП оно по умолчанию составляет 1023 рабочих потоков и 1000 потоков ввода-вывода.

Допустим в пуле 1000 потоков, а 10 тысячк пользоватлей делают запросы. Не может быть что остальная масса людей будут ждать окончания других запросов.

Как это работает с асинхронностю? Посоветуйте статьи/книги где описан процесс работы веб-сервера и асинхронных экшнеов
  • Вопрос задан
  • 108 просмотров
Решения вопроса 1
@qandak
Архитектор
... ждать окончания других запросов.


Надо понимать, что пул как абстракция по своей сути подразумевает очередь и ожидание. Если метод логин ходит в базу на другой хост, который имеет на данный момент свои проблемы, ждать определенное время надо будет по-любому, независимо от состояния пула. Если это обычный логин с условным редисом - юзер не почувствует разницу, будь там 5 тысяч запросов или пятнадцать.

Пул потоков виртуальной машины (CLR, JVM, etc.) или JIT - это виртуализация над пулом потоков ОС. ОС в свою очередь распределяет задачи с помощью своего планировщика на реальные потоки железа. В случае двухядерного ЦП с гипертредингом - 4. То есть, замечаем мы это или нет, ожидания и очереди есть всегда и везде.

Что касается случая с контроллером запросов, тут всё зависит от фреймворка и конфигураций. Отклонить сразу, отклонить по таймауту, или врапить в виртуальный поток. У JVM был такой Project Loom, позволяющий создавать миллион потоков без ограничений ОС (включено в JDK начиная с версии 12).
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы