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

所以这是我的情况。

我有2台服务器


端口3000上的AppServer
端口5000上的JobServer


两者都在具有2个核心的计算机上并以群集模式运行。因此,据我了解,将有2个AppServer实例和2个JobServer实例,并且内部Node 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或如果我采用也是基于NodeJs的V8引擎构建的Chrome的情况,如果一个选项卡被阻止,它也会阻止其他选项卡,因此如果我将1个选项卡视为1个服务器并且将AppServer阻止,显然会阻止JobServer。


因此,如果1是正确的,则阻止JobServer是错误的,那么为什么会发生呢?
如果情况2是正确的,那么我有一个答案,为什么JobServer被阻止。


请发表您的意见。

提前致谢。

最佳答案

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

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

09-11 09:55