Nodejs,专用服务器,cpu密集型任务

时间:2016-11-26 08:07:55

标签: node.js multithreading performance web-services server

我正在使用以下过程在nodejs上运行的专用服务器上执行cpu密集型任务。想知道这是否是正确的方法(步骤和方法作为一个整体) -

(注意 - 完成cpu密集型任务的时间并不重要,只要它刚完成)

  1. 在同一台计算机上的不同端口上为cpu密集型任务(CPS)创建nodejs Web服务器(WS)和另一个nodejs服务器
  2. WS通过localhost http请求向CPS发送cpu密集型任务
  3. CPS被阻止,按顺序执行每项任务。 WS不会被CPS阻止直接影响(我假设这个!)
  4. 问题1。如果由于WS发送的请求,CPS有一个庞大的队列会继续增长,会发生什么?
    问题2。这是一项做CPU密集型工作的坏方法吗?什么是更好的解决方案?

1 个答案:

答案 0 :(得分:0)

<强>正确答案为即可。如果CPS继续排队请求,在某些时候(在非常大的请求队列中),heap size的应用程序将超过操作系统限制 - &gt; CPS将被关闭,失去所有排队的请求。可以把这个场景想象成对CPS的DDOS攻击!

<强> ANSWER2 即可。如果预计队列变大,建议使用任务队列(如kue)/消息队列,如Redis Simple Messaging Queue (rsmq)

我在这个时间点使用简单的HTTP,因为我的负载不是很大。我可以稍后更新此答案(当我的服务器负载增加时)。

(某些来源来自Stackoverflow上的this question