Meteor - 如何同时运行多个服务器进程?

时间:2015-03-15 12:34:06

标签: javascript node.js meteor

我的Meteor应用程序需要运行13个独立的服务器进程,每个进程位于setInterval。本质上,我正在为新数据ping 13个不同的外部API,并对响应执行计算并将结果存储在Mongo中。每个过程看起来都是这样的:

Meteor.setInterval(function () {
  try {
    var response = Meteor.http.call("GET", <url>, {
      params: <params>,
      timeout: <timeout>
    });
  }
  catch (err) {
    console.log(err);
  }
  if (response.statusCode === 200) {
    // handle the response
    ...
  }
}, 10000);

不幸的是,在这些间隔功能中只有三个打开并且并排运行之后,Meteor窒息了。我开始在控制台中抛出socket hangup错误和JS Allocation Failed错误。我认为这与Node的单线程有关。有人知道这个解决方案是什么吗?我看起来很长很难......我真的想知道我是否必须将13个流程(似乎没有运行)的1个流星应用程序的后端拆分为13个流星(或Node.js应用程序) ),每个都有1个过程。谢谢!

2 个答案:

答案 0 :(得分:0)

尝试https://atmospherejs.com/vsivsi/job-collection

优点:

  • 可以将作业添加到队列中,并且可以精确控制成功或失败的时间......失败的作业可以轻松地重新排队。

  • 它会自动聚集在与同一集合相关的所有Meteor进程中。

答案 1 :(得分:0)

状态更新:问题的很大一部分与Node是单线程有关。我通过将这个单片Meteor应用程序拆分为13个微服务Meteor应用程序解决了CPU限制问题,这些应用程序都连接到同一个MongoDB副本集。

这样,CPU上的所有核心都被利用,而不是Meteor试图只处理一个上的所有请求和进程。