• [^] # Re: 1 worker process pour nginx ?

    Posté par . En réponse au journal Le TapTempo du web, mais plus rapide. Évalué à 3.

    Vu que dans les programmes déjà existants Java était single-threadé et Rust multi-threadé la question se posait, et j'ai préféré prendre ce qui était le plus performant dans une configuration relativement standard.

    Avec node.js en mode cluster on arrive à :

    Requests/sec: 140514.83
    Transfer/sec: 26.00MB
    

    soit 4.5x la perf. monothreadée, donc un scaling quasi-linéaire (sur les 6 CPUs, 1 CPU était pris par wrk, et 0.7 par d'autres process).

    const http = require("node:http");
    const { cpus } = require("node:os");
    const cluster = require("node:cluster");
    const numCPUs = cpus().length;
    if (cluster.isPrimary)
     for (let i = 0; i < numCPUs; i++) {
     cluster.fork();
     }
    else {
     const server = http.createServer((req, res) => {
     if (req.path !== "/") res.writeHead(404);
     res.writeHead(302, {
     location: `https://avatar.spacefox.fr/Renard-${Math.round(
     Math.random() * 10
     )}.png`,
     });
     res.end();
     });
     server.listen(8000);
    }