Я понял, как Node использует де мультиплексор операционной системы для асинхронных неблокирующих вызовов, и он обрабатывает все запросы в одном потоке, сохраняя огромные затраты памяти, связанные с созданием миллионов потоков (по одному для каждого клиента). Это также помогает разработчикам Подход к параллелизму в приложениях гораздо проще. Пока все хорошо.
Проблема начинается для меня, когда пул потоков входит в picture.its, приведенный в документации узла, что там, где поддержка демультиплексора операционной системы не годится, тогда узел использует пул потоков (который является ничем иным, как потоками, 4 по умолчанию и 128 макс.) Для достижения похожая функциональность. Также упоминается, что файловые операции используют пул потоков вместо демультиплексора ОС.
Итак, меня беспокоит, скажем, я пишу веб-сервер, который должен выполнить несколько файловых операций для каждого клиента, тогда, если миллион клиентов одновременно использует мое приложение, тогда 4 рабочим потокам Node может потребоваться вечность для обслуживания всех запросов. так как пул потоков Node может работать с четырьмя файловыми операциями на данный момент по умолчанию. другие должны ждать, пока эти потоки не освободятся. Даже если рассматривать наилучший вариант пула потоков Node 128, может быть не лучше, если учесть, например, Tomcat, который может параллельно обрабатывать миллионы файловых операций в режиме блокировки.
Это заставило меня задуматься, если на веб-сервере слишком много операций ввода-вывода (в основном связанных с файлами и базами данных), действительно ли Node - правильный выбор?