Initial commit
This commit is contained in:
44
mcp-server/cluster.js
Normal file
44
mcp-server/cluster.js
Normal file
@@ -0,0 +1,44 @@
|
||||
/**
|
||||
* 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);
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user