ForgeTotal.js 5
sk

Total.js 5

Použite všetky CPU kódy v klastrovom režime

Total.js 5 · total5@0.0.19 clusterperformancedeployment Spustené s Total.js 5

Proces Node.js využíva jedno jadro procesora. Total.run({ cluster: N }) spustí master, ktorý vytvorí N worker procesov, z ktorých každý spúšťa celú vašu aplikáciu, a operačný systém medzi ne rozdeľuje prichádzajúce spojenia ('auto' namiesto čísla nechá master pridávať vlákna podľa rastúcej záťaže). Spúšťajte ho v režime release (release: true, ktorý vygenerovaný štartovací skript nastaví pomocou --release); watcher z režimu debug nie je určený pre cluster. V štartovacom skripte ide o jedinú možnosť:

Total.run({ cluster: 4, release: true }); // or cluster: 'auto'

Každý worker je samostatný proces s vlastnou pamäťou, takže všetko, čo uložíte do premennej, do CACHE alebo do MEMORIZE, existuje raz pre každý worker a nezdieľa sa: dve požiadavky toho istého používateľa môžu skončiť v rôznych workeroch. Zdieľaný stav ukladajte do databázy, do súborového úložiska alebo do služby správ a relácie držte v úložisku, ktoré môžu čítať všetky workery. Plánované úlohy ako CRON() sa tiež vykonávajú v každom workeri, takže ich ošetrite, ak sa majú vykonať iba raz.

Skontrolujte, že všetci workeri bežia. Po nasadení opakovane vyžiadajte URL ako /pid/ nižšie a spočítajte rôzne id: malo by ich byť toľko, koľko workerov ste žiadali.

Každý zamestnanec má svoj vlastný procesný ID. Príklad začína dvoch zamestnancov a obsahuje tento ID v odpovedi.

controllers/pid.js
exports.install = function() {
	ROUTE('GET /pid/', pid);
	ROUTE('GET /dir/', dir);
};

function pid($) {
	$.json({ pid: process.pid });
}

function dir($) {
	$.json({ dir: PATH.root() });
}
cluster.js
require('total5');
Total.run({ cluster: 2, port: 8766, release: true });