1

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

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

环境设置是:

  • 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

在处理来自 ActiveMQ 队列的大约 3000 条消息后,我一直遇到一个Unhandled rejection Range Error: Out of Memory Exception问题,消息从外部源以 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");
         }
      }
    }
  }

什么可能导致此问题?

如果需要任何其他信息,请告诉我。

4

0 回答 0