Как nodejs обрабатывает десятки тысяч соединений?

Знаю что Node.js использует однопотоковый цикл и цикл обработки событий для обработки запросов, обрабатывающих только по одному за раз. Но все же, как это работает, скажем, 7 000 одновременных запросов. Цикл обработки событий будет обрабатывать все запросы? Разве это не займет слишком много времени?
Я не могу понять , как это может быть быстрее, чем многопоточный веб-сервер. Хотя понимаю, что многопоточный веб-сервер будет дороже в ресурсах (память, процессор), но не будет ли он еще быстрее? Я наверное ошибаюсь; объясните, как этот однопотоковый процесс выполняется быстрее при большом количестве запросов, и что он обычно делает (на низком уровне) ?
  • Вопрос задан
  • 604 просмотра
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Асинхронное программирование
Седой и строгий
Самые большие затраты на ввод/вывод. Грубо говоря, если один запрос 90% времени ожидает I/O, то в случае 10 000 конкурентных запросов сервер 9,999% времени находится в ожидании I/O, а асинхронное выполнение позволяет это время использовать с пользой или попросту списать. В то время как многопоточный сервер, обрабатывающий 10k соединений, 90% времени будет тратить на переключение контекста, да и то, если памяти хватит.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
profesor08
@profesor08
Так-же как и любые другие веб серверы, быстро переключается на выполнение других операций, пока текущие чего-то ожидают.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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