使用大量并发请求来响应服务器端渲染

时间:2019-04-25 08:09:50

标签: node.js reactjs serverside-rendering ssr

对于一个大型应用程序,我们已经变得烦恼了,它具有非常复杂的结构和重要的渲染时间。到目前为止,它运行良好且性能良好,但是从某种意义上说,我们在处理大量并发请求时遇到了麻烦,因为这些请求开始排队,而不是立即处理。

我进行了一些研究,发现问题是CPU密集的渲染过程,因此我们尝试通过添加集群来使其变得更好一些。

我们已经尝试了以下代码,但是该代码不起作用,因为混乱似乎已经触发了后端的“侦听”方法:

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个云服务器实例的情况下运行具有数千个请求的应用程序。

0 个答案:

没有答案