Реагируйте на стороне сервера рендеринга с множеством параллельных запросов - PullRequest
0 голосов
/ 25 апреля 2019

мы изменили на razzle для большого приложения с очень сложной структурой и важным временем рендеринга.До сих пор он работал довольно хорошо и производительно, но у нас возникают проблемы с множеством параллельных запросов, в том смысле, что запросы начинают стоять в очереди, а не обрабатываются сразу.

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

Мы попробовали следующий код, который, однако, не работает, потому что razzle кажетсячтобы уже запустить метод «прослушивания» в бэкэнде:

var cluster = require('cluster');

if(cluster.isMaster) {
    var numWorkers = require('os').cpus().length;

    console.log('Master cluster setting up ' + numWorkers + ' workers...');

    for(var i = 0; i < numWorkers; i++) {
        cluster.fork();
    }

    cluster.on('online', function(worker) {
        console.log('Worker ' + worker.process.pid + ' is online');
    });

    cluster.on('exit', function(worker, code, signal) {
        console.log('Worker ' + worker.process.pid + ' died with code: ' + code + ', and signal: ' + signal);
        console.log('Starting a new worker');
        cluster.fork();
    });
} else {
    var app = require('../build/server');

    app.listen(3000, function() {
         console.log('Process ' + process.pid + ' is listening to all incoming requests');
    });
}

Есть ли у кого-нибудь из вас советы по лучшей работе с сайтами с высокой нагрузкой?Как вы обычно решаете и решаете эту проблему?

Кластеризация - это даже путь, или мы должны смотреть на child_processes?Как вы запускаете свои приложения с помощью нескольких тысяч запросов, не прибегая к масштабированию до 1000 экземпляров облачного сервера.

...