内存不足异常-未处理的RangeError

时间:2019-06-18 11:30:24

标签: node.js activemq worker-pool

我创建了一个NodeJS服务,该服务从ActiveMQ队列中读取消息,进行远程设置,然后拾取这些消息,对其进行处理并将一些数据推送到GUI。

我所面临的问题是,当它们以大约30%的速度快速进入ActiveMQ队列时,它们试图在NodeJS端处理这些消息。每秒5条消息(JSON),每条JSON消息的大小约为18kb。 传入的消息将被写入文件,保存到中间MSSQL表中,一旦保存,JSON文件将移至“已处理”文件夹中。

环境设置为:

  • NodeJS版本8.9.4。
  • ActiveMQ版本5.15.4。
  • Java版本1.8.0_171。
  • 在主Node进程旁边创建了三个工作进程 处理消息负载。

使用节点模块“ Workerpool”创建工作程序。 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,在处理了ActiveMQ队列中的大约3000条消息之后,消息以200ms /条消息的频率从外部源推送到队列中。

代码:


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");
         }
      }
    }
  }

什么可能导致此问题?

请让我知道是否需要其他信息。

0 个答案:

没有答案