Použijte všechny CPU kódy v klastru
Proces Node.js využívá jedno jádro procesoru. Total.run({ cluster: N }) spustí master, který vytvoří N procesů worker, z nichž každý spouští celou vaši aplikaci, a operační systém mezi ně rozděluje příchozí spojení ('auto' místo čísla nechá master přidávat vlákna podle rostoucí zátěže). Spouštějte ho v režimu release (release: true, který vygenerovaný startovací skript nastaví pomocí --release); watcher režimu debug není pro cluster určen. Ve startovacím skriptu jde o jedinou volbu:
Total.run({ cluster: 4, release: true }); // or cluster: 'auto'Každý worker je samostatný proces s vlastní pamětí, takže vše, co uložíte do proměnné, do CACHE nebo do MEMORIZE, existuje jednou pro každý worker a nesdílí se: dva požadavky téhož uživatele mohou skončit u různých workerů. Sdílený stav ukládejte do databáze, do souborového úložiště nebo do služby zpráv a relace držte v úložišti, které mohou číst všichni workeři. Plánované úlohy jako CRON() se také provádějí v každém workeru, takže je ošetřete, pokud se mají provést jen jednou.
Zkontrolujte, že všichni workeři běží. Po nasazení opakovaně vyžádejte URL jako /pid/ níže a spočítejte různá id: mělo by jich být tolik, kolik workerů jste žádali.
Každý zaměstnanec má svůj vlastní procesní ID. Příklad začíná dvěma zaměstnancům a zahrnuje tento ID v odpovědi.
exports.install = function() {
ROUTE('GET /pid/', pid);
ROUTE('GET /dir/', dir);
};
function pid($) {
$.json({ pid: process.pid });
}
function dir($) {
$.json({ dir: PATH.root() });
}require('total5');
Total.run({ cluster: 2, port: 8766, release: true });