节点 JS 集群可同时使用 4 个核心 CPU



服务器代码

module.exports = function(cluster){
let express = require('express')
let app = express()
app.get('/',function(req, res){
console.log('Worker %d started!'+new Date(), cluster.worker.id);
sleep(60000)
for(var i = 0; i < 999999999; i++) {}
res.end('Hello from Worker ' + cluster.worker.id);
console.log('Worker %d returned!'+new Date(), cluster.worker.id);
});
app.listen(8080,function(){
console.log('Application started! Worker %d started!, process %d', cluster.worker.id, cluster.worker.process.pid);
});
function sleep(miliseconds) {
var currentTime = new Date().getTime();
while (currentTime + miliseconds >= new Date().getTime()) {
}
}
}

集群代码

let cluster = require('cluster');
let app = require('./index');
cluster.schedulingPolicy = cluster.SCHED_RR;
if(cluster.isMaster){
let cpuCount = require('os').cpus().length;
for (var i = 0; i < cpuCount; i += 1) {
cluster.fork();
}
cluster.on('exit', function() {
cluster.fork();
});
}else{
app(cluster);
}
cluster.on('fork', function(worker) {
console.log('forked -> Worker %d', worker.id);
});

-当我在默认快速端口 8080 上点击多个 API 时,它只使用 CPU 的一个内核,它等待第一次命中的过程,然后执行下一个请求。 -为什么集群不使用CPU的另一个核心并行处理4(对于四核CPU(请求。

与其从单个选项卡运行脚本,不如使用多个命令选项卡运行它,计算机的所有 CPU 都将被利用,您可以在系统监视器中检查它们。

最新更新