У меня есть веб-сервер, на котором запущен процесс Node, которым управляет pm2, а веб-сервер имеет 16 доступных ядер.
Процесс Node управляет очередью задач с использованием асинхронного модуля.Эта очередь задач, в зависимости от количества поступающих событий, может увеличиться до 10 000 в случае разрыва между процессом Node и сервисом, с которым он взаимодействует.
Очередь будет поддерживать этот список задачв случае разъединения, а затем при восстановлении соединения выполняются поставленные в очередь задачи.
Документы говорят следующее ...
Задачи, добавленные кочереди обрабатываются параллельно (до лимита параллелизма).Если все рабочие выполняются, задача ставится в очередь, пока один из них не станет доступным.Как только работник завершает задачу, вызывается обратный вызов этой задачи.
Вот мои вопросы ...
Если в очереди было 10 000 задач,и я установил уровень параллелизма равным 1, прав ли я, полагая, что они будут по существу выполняться по одному за раз?Если так, я думаю, это означает, что, если новые задачи будут добавлены, эта очередь потенциально никогда не будет полностью очищена?
Если бы я должен был установить значение параллелизма равным 16, он бы по существу выполнялся16 задач параллельно, используя каждое ядро процессора?Или параллелизм управляется чем-то другим?
Как задачи выполняются параллельно?Насколько я понимаю, что один процесс Node может использовать только одно ядро за раз, потому что он однопоточный.
Я полностью упускаю из виду то, как асинхронные модули управляют параллельными задачами ?!
Заранее спасибо вам, умная связка!