Код сервера
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);
});
-При появлении нескольких API на стандартном экспресс-порту 8080, тогдаон использует только одно ядро ЦП, где он ожидает процесса первого попадания, а затем будет выполнен следующий запрос.-Почему кластер не использует другое ядро ЦП для параллельной обработки запроса 4 (для четырехъядерного ЦП).