Javascript 节点集群:为什么所有请求都只由一个工作进程处理?

Javascript 节点集群:为什么所有请求都只由一个工作进程处理?,javascript,multithreading,node.js,cluster-computing,Javascript,Multithreading,Node.js,Cluster Computing,我已经创建了一个Node.js集群,如下所示 我在API调用中放入了console.log(cluster.worker.id),以确定哪个工人正在接受请求 所有worker都已成功启动(我有4个核心,因此我创建了4个worker),但请求始终由一个worker处理 有人知道为什么会这样吗?我使用的是Windows 7操作系统,Node的版本为0.8.8。您看不到任何工作进程的切换,因为群集识别到它没有处于高负载下,并且不需要切换工作进程。当进程处于高负载时,集群将自动进行负载平衡。以下是文档中

我已经创建了一个Node.js集群,如下所示

我在API调用中放入了
console.log(cluster.worker.id)
,以确定哪个工人正在接受请求

所有worker都已成功启动(我有4个核心,因此我创建了4个worker),但请求始终由一个worker处理


有人知道为什么会这样吗?我使用的是Windows 7操作系统,Node的版本为0.8.8。

您看不到任何工作进程的切换,因为群集识别到它没有处于高负载下,并且不需要切换工作进程。当进程处于高负载时,集群将自动进行负载平衡。以下是文档中的内容:

当多个进程都在同一基础上运行时 资源,操作系统负载平衡非常重要 效率高。Node.js或您的程序中没有路由逻辑, 工人之间没有共享状态。因此,重要的是 设计您的程序,使其不太依赖于 内存中的数据对象,例如会话和登录


您是在对服务器进行压力测试,还是只是偶尔触发一个测试请求?对于后者,可能是因为该工作者是第一个可以处理请求的人。我做了一个测试用例:虽然它有时是粘性的,但它确实会旋转。我正在对它进行压力测试。我已经发现,总是最后一个工人创建了接受请求的服务器。可能是因为窗户的缘故吗。。。我真的没有任何想法了…我也有同样的问题。我认为最后一个创建的worker接收所有请求,而所有其他worker都处于空闲状态。我正在Windows上运行它,我可以看到它的运行。我设置了一个断点来“保持”似乎正在捕获所有负载的工作进程。我提出的下一个要求是另一个工人。