Node js балансировка нагрузки кластера не балансируется между подпроцессами - PullRequest
0 голосов
/ 27 марта 2020

Я работаю над версией 2.0 приложения, и для этой новой версии я работаю с многопоточностью, чтобы оптимизировать свою производительность. Я написал простой код, чтобы увидеть, как балансировка узлов между процессами. Вот код:

const cluster = require('cluster');
const numCPUs = require('os').cpus().length;

process.title = "xxxxx";

let count = {
    1:0,
    2:0,
    3:0,
    4:0
};

if (cluster.isMaster) {
     console.clear()
     console.log(`+ ${process.pid}`);
     console.log(`|`);

     // Fork workers.
     for (let i = 0; i < numCPUs; i++) {
         cluster.fork();
     }

     cluster.on('exit', (worker, code, signal) => {
         console.log(`|-- ${worker.process.pid} died`);
     });

} else {

     // Include Express
     var express = require('express');

     // Create a new Express application
     var app = express();

     // Add a basic route – index page
     app.get('/', function (req, res) {
         res.send("Process : " + process.pid + " Worker : " + cluster.worker.id);
         count[cluster.worker.id] = count[cluster.worker.id] + 1
         console.clear()
         console.log(count)
     });

     // Bind to a port
     app.listen(8080);

     console.log(`|-- ${process.pid}`);
 }

Я ожидал распределения 25% нагрузки между 4 рабочими. Но после запуска несколько раз мой сценарий с артиллерией я получаю

{ '1': 0, '2': 0, '3': 55000, '4': 0 }

На поле битвы находится только рабочий 3, другие пьют пиво и играют в карты.

Я что-то не так делаю или мне что-то не хватает при балансировке нагрузки в nodejs?

...