Explica cómo retirar tráfico, cerrar el servidor, drenar requests, detener workers y liberar conexiones durante despliegues o señales del sistema.
Última actualización
Actualizada
Nivel
Profundización
Graceful shutdown significa dejar de aceptar trabajo, permitir que lo activo termine dentro de un límite y liberar recursos antes de que el proceso sea forzado a morir.
En un despliegue o escalado, la plataforma envía una señal como SIGTERM. Si el proceso termina inmediatamente, corta requests, pierde jobs y deja conexiones sin limpiar.
Texto
SIGTERM
↓
not-ready
↓
dejar de aceptar conexiones
↓
drenar trabajo activo
↓
cerrar dependencias
↓
exit 0
let shuttingDown =false;asyncfunctionshutdown(signal: NodeJS.Signals){if(shuttingDown)return;
shuttingDown =true;
logger.info({ signal },'Shutdown started');
readiness.acceptingTraffic =false;
server.close(async(error)=>{if(error){
logger.error({ error },'HTTP server close failed');
process.exitCode =1;}awaitPromise.allSettled([
workers.close(),
pool.end(),]);});}
process.on('SIGTERM',()=>voidshutdown('SIGTERM'));
process.on('SIGINT',()=>voidshutdown('SIGINT'));
server.close deja de aceptar conexiones nuevas y espera conexiones atendidas, pero el comportamiento de keep-alive y sockets depende de versión/runtime.