Как обработать огромный массив объектов в nodejs - PullRequest
0 голосов
/ 06 июля 2019

Я хочу обработать массив длиной около 100 000 без чрезмерной нагрузки на процессор.Я исследовал потоки и наткнулся на highlandjs, но я не могу заставить его работать.

Я также пытался использовать посылы и обработку в чанках, но все же это сильно загружает ЦП, программа может быть медленной при необходимостино не следует загружать процессор

1 Ответ

1 голос
/ 07 июля 2019

В файле node.js, который запускает ваш Javascript как однопоточный, если вы хотите, чтобы ваш сервер максимально реагировал на входящие запросы, вам необходимо удалить любой код, интенсивно использующий процессор, из основного процесса http-сервера.Это означает выполнение интенсивной работы процессора в каком-либо другом процессе.

Существует несколько различных подходов к этому:

  1. Используйте модуль child_process для запуска другого приложения nodejs, специально созданного для выполнения работы, интенсивно использующей ваш процессор.
  2. Кластеризация вашего приложения, чтобы у вас было N различных процессов, которые могут выполнять как интенсивную загрузку ЦП, так и обрабатывать запросы.
  3. Создать рабочую очередь и ряд рабочих процессов, которые будут обрабатывать работу, интенсивно загружающую ЦП.

Если вы не выполняете эту интенсивную работу с ЦП очень часто, тогда, вероятно, самый простой вариант # 1.

Если вам нужно масштабировать по другим причинам (например, для обработки большого количества входящих запросов) ивы не часто выполняете ресурсоемкие операции # 2.

Если вы выполняете интенсивную работу с CPU довольно регулярно и хотите, чтобы обработка входящих запросов всегда имела наивысший приоритет, и вы готовы разрешить использование CPUЕсли вы потратите больше времени, то, вероятно, лучше всего использовать 3-ю очередь (очередь работ), и вы можете настроить количество рабочих процессов для оптимизации своего результата.

...