/** * Acai Code MCP Server - Cluster Mode * * Ejecuta múltiples workers para aprovechar todos los CPUs. * Cada worker maneja sus propias conexiones SSE. */ import cluster from 'node:cluster'; import os from 'node:os'; const numCPUs = os.cpus().length; // Usar máximo 4 workers o el número de CPUs, lo que sea menor const numWorkers = Math.min(numCPUs, 4); if (cluster.isPrimary) { console.log(`[Cluster] Master ${process.pid} iniciando`); console.log(`[Cluster] CPUs disponibles: ${numCPUs}`); console.log(`[Cluster] Spawneando ${numWorkers} workers...`); // Spawnear workers for (let i = 0; i < numWorkers; i++) { cluster.fork(); } // Reiniciar worker si muere cluster.on('exit', (worker, code, signal) => { console.error(`[Cluster] Worker ${worker.process.pid} murió (${signal || code}). Reiniciando...`); cluster.fork(); }); // Log cuando un worker está listo cluster.on('online', (worker) => { console.log(`[Cluster] Worker ${worker.process.pid} online`); }); } else { // Worker: ejecutar el servidor MCP import('./index.js').then(() => { console.log(`[Worker ${process.pid}] MCP Server iniciado`); }).catch((err) => { console.error(`[Worker ${process.pid}] Error:`, err); process.exit(1); }); }