ForgeTotal.js 5
es

Total.js 5

Utilice todos los núcleos CPU con el modo de cluster

Total.js 5 · total5@0.0.19 clusterperformancedeployment Ejecutada con Total.js 5

Un proceso de Node.js usa un solo núcleo de la CPU. Total.run({ cluster: N }) arranca un master que lanza N procesos worker, cada uno con toda tu aplicación, y el sistema operativo reparte entre ellos las conexiones entrantes ('auto' en lugar de un número deja que el master añada hilos según crece la carga). Ejecútalo en modo release (release: true, que el script de arranque generado activa con --release); el watcher de debug no está pensado para un cluster. En el script de arranque es una sola opción:

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

Cada worker es un proceso independiente con su propia memoria, así que lo que guardes en una variable, en CACHE o en MEMORIZE existe una vez por worker y no se comparte: dos peticiones del mismo usuario pueden caer en workers distintos. Guarda el estado compartido en una base de datos, en un almacén de archivos o en un servicio de mensajes, y mantén las sesiones en un almacén que todos los workers puedan leer. Las tareas programadas como CRON() también se ejecutan en cada worker, así que protégelas si deben ejecutarse una sola vez.

Comprueba que todos los workers están arriba. Tras un despliegue, solicita varias veces una URL como /pid/ de abajo y cuenta los ids distintos: deben ser tantos como los workers que pediste.

Cada trabajador tiene su propio ID de proceso.El ejemplo comienza con dos trabajadores y incluye ese ID en la respuesta.

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