ForgeTotal.js 5
pl

Total.js 5

Wykorzystaj wszystkie kolory CPU w trybie klastrowym

Total.js 5 · total5@0.0.19 clusterperformancedeployment Uruchomiono z Total.js 5

Proces Node.js używa jednego rdzenia procesora. Total.run({ cluster: N }) uruchamia mastera, który tworzy N procesów worker, a każdy z nich uruchamia całą Twoją aplikację; system operacyjny rozdziela między nie przychodzące połączenia ('auto' zamiast liczby pozwala masterowi dodawać wątki wraz ze wzrostem obciążenia). Uruchamiaj go w trybie release (release: true, co wygenerowany skrypt startowy ustawia przez --release); watcher trybu debug nie jest przeznaczony dla clustra. W skrypcie startowym to jedna opcja:

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

Każdy worker to osobny proces z własną pamięcią, więc wszystko, co trzymasz w zmiennej, w CACHE lub w MEMORIZE, istnieje raz na każdy worker i nie jest współdzielone: dwa żądania tego samego użytkownika mogą trafić do różnych workerów. Wspólny stan trzymaj w bazie danych, magazynie plików lub usłudze komunikatów, a sesje w magazynie, który mogą czytać wszystkie workery. Zadania zaplanowane, takie jak CRON(), też działają w każdym workerze, więc zabezpiecz je, jeśli mają się wykonać tylko raz.

Sprawdź, czy wszystkie workery działają. Po wdrożeniu kilkakrotnie zażądaj adresu takiego jak /pid/ poniżej i policz różne id: powinno ich być tyle, ilu workerów zażądano.

Każdy pracownik ma swój własny identyfikator procesowy. przykład rozpoczyna dwóch pracowników i zawiera ten identyfikat w odpowiedzi.

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