节点群集未将任务分派给另一个可用的工作线程
Node Cluster is not dispatching task to another worker available
这是我关于堆栈溢出的第一个问题,所以请原谅我在这个问题中的任何错误或信息不足。
因此,我正在尝试为我的服务器使用 nodeJS 的集群模块,并通过我的 Windows 机器运行 nodeJS。我知道nodeJS在Windows中没有针对集群模块的任何调度策略,因此我已明确将scheduling_policy设置为rr,如nodeJS文档所述。但问题是,当我试图通过将其置于无限循环中来让一个工人忙碌时;当我们尝试向服务器请求"/"资源时,服务器未将请求调度给另一个可用且空闲的工作线程。
请帮助我为什么它不将请求发送给其他工人。
var cluster=require('cluster');
if(cluster.isMaster){
var cores=require('os').cpus().length;
console.log("Master Cluster setting up :-"+cores+" workers");
for(var i=0;i<cores;i++)
cluster.fork();
cluster.on('online',(worker)=>{
console.log("Worker with Process ID :- "+worker.process.pid+" online");
});
cluster.on('exit',(worker)=>{
console.log("worker "+worker.process.pid+" died...So setting up a new worker");
cluster.fork();
});
}
else{
var app=require('express')();
app.get('/',(req,res)=>{
console.log("Process with pid "+process.pid+" is handling this request");
while(true);
res.write("Yes!");
res.end();
//while(true);
})
app.listen('3000');
}
你写的上面的代码工作得很好。但是您需要向节点服务器发送并发请求,而不是循环发送请求,然后您将看到节点集群模块的强大功能。
节点群集模块有两种用于分发传入连接的方法。
第一个(以及除Windows以外的所有平台上的默认方法)是循环方法。
第二种方法是主进程创建侦听套接字并将其发送给感兴趣的工作线程。然后,工作人员直接接受传入的连接
您可以使用 http://blog.remarkablelabs.com/2012/11/benchmarking-and-load-testing-with-siege 发送并发请求。现在,您将看到切换到您的流程。
相关文章:
- Web 工作线程中的同步 XHR 请求是否仍会锁定浏览器
- 在工作线程中使用 setTimeOut
- 页面工作线程 - destroy() 似乎没有删除窗口对象
- 如何在工作线程中调用 window.external.notify
- 服务工作线程是否可以响应同步 XHR 请求
- 增加服务工作线程的生命周期
- Android Web Console: UncaughtReferenceError: 未定义工作线程
- 节点群集未将任务分派给另一个可用的工作线程
- Web 工作线程/画布的内存泄漏
- 如何通过 webhook 将 json 格式的字符串作为有效负载传递给 iron.io 工作线程
- jQuery Mobile App 的后台工作线程
- 服务工作线程是否可以缓存 POST 请求
- RxJS 和主/工作线程工作流
- 关于 Web 工作线程并行性
- 如何从字符串创建 Web 工作线程
- 如果工作线程发布消息时主线程繁忙,会发生什么情况
- 如何删除有缺陷的服务工作线程,或实现“终止开关”
- 我可以在浏览器ui线程和web工作线程中安全地使用html5中的哪些本地存储
- 当标签关闭时,HTML5 web工作线程会发生什么's正在跑步
- Javascript工作线程选项