如果Node进程本身忙碌会发生什么

时间:2017-08-01 06:27:30

标签: javascript node.js v8

可能这个问题很容易,但我只想知道当Node Js流程本身忙于某个流程时会发生什么,然后其他流程会发生什么。

所以这是我的情景。

我有2台服务器

  1. 端口3000上的AppServer
  2. 端口5000上的JobServer
  3. 两者都在 2核的计算机上运行并处于群集模式。因此,根据我的理解,将有 2个AppServer实例和2个JobServer实例以及内部节点js负载平衡到需要调用的实例(如果我是错误)。这个设置落后于ELB。

    所以从外面我把服务器称为:

    <ELB_URL>/<something>/1 ---> this goes to AppServer.js
    <ELB_URL>/<something>/2 ---> this goes to JobServer.js
    

    案例1 现在假设,对于某些请求,AppServer的CPU使用率为100%。那时JobServer也停止工作,或者我应该说被阻止了。

    既然AppServer与JobServer不同,为什么JobServer根本没有响应,我的意思是它应该正常工作,对吧?

    案例2 或者,如果我采用Chrome的场景,这也是基于V8引擎构建,这是NodeJ的基础,如果一个标签被屏蔽,它也会阻止其他标签,因此,如果我将 1个标签视为1个服务器&amp;如果AppServer被阻止,它将显然阻止JobServer。

    1. 因此,如果1是正确的,阻止JobServer是错误的那么为什么会发生?
    2. 如果案例2是正确的,那么我有一个答案,为什么JobServer被阻止。
    3. 请提出您的意见。

      提前致谢。

1 个答案:

答案 0 :(得分:1)

在node.js中,无论你有多少CPU /核心,只有一个单一的事件队列。这意味着如果当前正在处理的事件被卡住,则整个应用程序都会被卡住。

要解决此问题,您需要运行2个不同的node.js进程,每个服务器一个。