我在this示例后创建了一个Node.js群集。
我已在我的API调用中放置console.log(cluster.worker.id)
来确定哪个工作人员正在接受请求。
所有工作人员都已成功启动(我有4个核心,因此我创建了4个工作人员)但请求总是由一个工作人员处理。
有谁知道为什么会这样?我使用的是Windows 7操作系统,并且拥有0.8.8版本的Node。
答案 0 :(得分:3)
您没有看到任何工作人员切换,因为Cluster认识到它没有处于高负载状态,并且不会打扰工作人员。当进程处于高负载时,群集将自动进行负载平衡。这是文档所说的内容:
当多个进程都
accept()
在同一个底层上时 资源,操作系统非常负载均衡 有效率的。 Node.js或程序中没有路由逻辑, 并且工人之间没有共享状态。因此,重要的是 设计你的程序,使其不太依赖 用于会话和登录等事物的内存数据对象。