Guía extrema: Cómo optimizar el build de Next.js en servidores VPS con recursos limitados
Evita que tu VPS se congele durante la compilación. Técnicas avanzadas de optimización de CPU, hilos y memoria RAM para builds estables.
Si has intentado compilar una aplicación mediana o grande de Next.js en un VPS básico (por ejemplo, con 1 o 2 GB de RAM), es muy probable que hayas sufrido un congelamiento completo del servidor. Esto ocurre porque Next.js, por defecto, intenta utilizar todos los hilos de CPU y toda la RAM disponible para paralelizar las tareas de optimización de código.
A continuación, te explico los ajustes clave que utilizo en mis proyectos de Sinergia para mantener las compilaciones seguras y estables en cualquier VPS.
1. Ajustes en next.config.ts
La configuración más crítica es limitar los hilos de trabajo y la asignación de procesadores virtuales. Agrega esto en tu archivo de configuración:
import type { NextConfig } from "next";
const nextConfig: NextConfig = {
experimental: {
workerThreads: false, // Desactiva la paralelización extrema
cpus: 1, // Limita a un único core el proceso de compilación
},
};
export default nextConfig;
2. Limitar el uso de memoria en Node
Podemos controlar la memoria máxima asignada a Node usando las opciones de variables de entorno al ejecutar el comando de build:
NODE_OPTIONS="--max-old-space-size=1024" npm run build
Esto evitará que el proceso sufra un error Out of Memory o sature la swap del sistema, manteniendo el servidor estable para el resto de webs.
Preguntas frecuentes
¿Por qué se congela tu VPS al compilar una aplicación de Next.js?
Esto ocurre porque Next.js intenta usar por defecto todos los hilos de CPU y toda la memoria RAM disponible para paralelizar las tareas de optimización de código.
¿Cómo puedes evitar que el build use demasiados núcleos de CPU?
Puedes limitar el proceso a un único núcleo y desactivar la paralelización extrema configurando `workerThreads: false` y `cpus: 1` dentro de la propiedad `experimental` en tu archivo `next.config.ts`.
¿De qué manera puedes controlar la memoria RAM que utiliza Node durante la compilación?
Debes ejecutar el build usando la variable de entorno `NODE_OPTIONS="--max-old-space-size=1024" npm run build`. Esto evitará que sufras un error *Out of Memory* o que satures la swap del sistema.