Исключение нехватки памяти - необработанная ошибка RangeError - PullRequest
1 голос
/ 18 июня 2019

Я создал службу NodeJS, которая считывает сообщения из очереди ActiveMQ, настраивает их удаленно, получает эти сообщения, обрабатывает их и передает некоторые данные в графический интерфейс.

Проблема, с которой я сталкиваюсьпытается обработать эти сообщения на конце NodeJS, когда они поступают в быстром темпе в очередь ActiveMQ со скоростью прибл.5 сообщений (JSON) в секунду, и каждое сообщение JSON имеет размер около 18 КБ.Входящие сообщения записываются в файл, сохраняются в промежуточную таблицу MSSQL и после сохранения файл JSON перемещается в папку «Обработано».

Настройка среды:

  • NodeJS версия 8.9.4.
  • ActiveMQ версия 5.15.4.
  • Java версия 1.8.0_171.
  • Три основных рабочих процесса создаются вдоль основного процесса Node для обработкизагружается сообщение.

Рабочие создаются с помощью узла модуля "Рабочий пул".https://github.com/josdejong/workerpool

RAM: 2 GB
Processor: Intel Xeon Dual Core processor @2.27GHz 
OS: Windows Server 2008 R2

Я продолжаю работать в Unhandled rejection Range Error: Out of Memory Exception, после обработки около 3000 сообщений из очереди ActiveMQ, сообщения отправляются в очередь из внешнего источника с частотой 200 мс / сообщение.

Код:


message.readString('utf-8', function (err, body) {
  fs.writeFile('/path/to/writefileto', JSON.stringify(body), function(err) {
  if(err) {
    // handle the error
  } else {
    /* if the file exists in the source path, move to a Processed path */
    if(fs.existsSync('/path/writtento')) {
      fs.rename('/path/writtento', '/path/to/processedDir', function(err) {
         if(!err) {
           console.log("Successful in moving the file to Processed path");
         }
      }
    }
  }

Что может быть причиной этой проблемы?

Пожалуйста, дайте мне знать, если требуется какая-либо другая информация.

...