ForgeTotal.js 5
hu

Total.js 5

Használja az összes CPU-t a klaszter módban

Total.js 5 · total5@0.0.19 clusterperformancedeployment Total.js 5-tel lefuttatva

Egy Node.js-folyamat egyetlen CPU-magot használ. A Total.run({ cluster: N }) elindít egy mastert, amely N worker folyamatot hoz létre, mindegyik a teljes alkalmazásodat futtatja, a bejövő kapcsolatokat pedig az operációs rendszer osztja el közöttük (szám helyett az 'auto' hagyja, hogy a master a terhelés növekedésével szálakat adjon hozzá). Release módban futtasd (release: true, amit a generált indítóscript a --release kapcsolóval állít be); a debug mód watchere nem clusterhez készült. Az indítóscriptben ez egyetlen opció:

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

Minden worker külön folyamat saját memóriával, ezért minden, amit változóban, a CACHE-ben vagy a MEMORIZE-ban tartasz, workerenként egyszer létezik, és nincs megosztva: ugyanazon felhasználó két kérése különböző workerre kerülhet. A közös állapotot adatbázisban, fájltárolóban vagy üzenetszolgáltatásban tartsd, a munkameneteket pedig olyan tárolóban, amelyet minden worker olvashat. Az ütemezett feladatok, például a CRON(), szintén minden workerben futnak, ezért védd őket, ha csak egyszer szabad lefutniuk.

Ellenőrizd, hogy minden worker fut. Telepítés után kérj le többször egy /pid/-hoz hasonló URL-t az alábbiak szerint, és számold meg a különböző azonosítókat: annyinak kell lennie, ahány workert kértél.

Minden munkásnak megvan a maga eljárási azonosítója.A példa két munkát indít, és ezt az azonosítót tartalmazza a válaszban.

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 });