Servidores y VPS

VPS sin RAM: cómo gestionar la memoria y swap correctamente

Cuando tu servidor VPS se queda sin memoria RAM disponible, el sistema puede volverse lento o matar procesos; aprende a diagnosticar el problema y configurar swap para recuperar la estabilidad.

A modern server room featuring network equipment with blue illumination. Ideal for technology themes.

Cuando tu servidor VPS se queda sin memoria RAM disponible, el kernel de Linux activa el OOM Killer, que termina procesos de forma abrupta para liberar memoria. La solución inmediata es revisar qué está consumiendo la RAM y agregar swap como red de seguridad.

¿Por qué se agota la RAM en un VPS?

Los VPS comparten hardware físico mediante virtualización, lo que significa que el límite de RAM que contrataste es un límite duro. A diferencia de un servidor dedicado, no hay memoria "extra" a la cual recurrir.

Las causas más frecuentes de agotamiento de memoria incluyen:

  • Fugas de memoria en aplicaciones mal escritas o plugins defectuosos.
  • Picos de tráfico que levantan demasiados procesos PHP, Python o Node al mismo tiempo.
  • MySQL o MariaDB con buffers demasiado grandes para la RAM disponible.
  • Caches no limitadas (Redis, Memcached) que crecen sin techo configurado.

Cómo diagnosticar el estado actual de la RAM

Antes de tocar cualquier configuración, necesitas entender qué está pasando. Ejecuta estos comandos en tu VPS:

# Resumen rápido de memoria
free -h

# Procesos ordenados por consumo de RAM
ps aux --sort=-%mem | head -20

# Ver si el OOM Killer ya actuó
dmesg | grep -i "oom\|killed" | tail -20

El comando free -h muestra la RAM total, usada, libre y la memoria de swap. Si la columna available es menor al 10 % de la RAM total, estás en zona de riesgo.

Interpretar la salida de free -h

La columna available es la más importante: indica cuánta memoria puede liberar el sistema para nuevos procesos sin entrar en swap. Un valor bajo pero con buffers/caché altos significa que Linux puede liberar esa caché si la necesita — no es necesariamente una emergencia.

Estado RAM available Acción recomendada
Saludable >25 % del total Ninguna acción urgente
En riesgo 10–25 % del total Revisar procesos y configurar swap
Crítico <10 % del total Actuar de inmediato

Cómo crear y activar swap en Linux

El swap es un área en disco que el kernel usa cuando la RAM se agota. No es un sustituto de la RAM — es mucho más lento — pero evita que el OOM Killer mate procesos críticos mientras resuelves el problema de fondo.

Para VPS con disco SSD (la mayoría modernos), se recomienda un archivo de swap de 1–2 veces la RAM disponible. Para más información sobre rendimiento de almacenamiento en VPS, consulta nuestra guía de servidores VPS.

# 1. Crear un archivo de swap de 2 GB
sudo fallocate -l 2G /swapfile

# 2. Asignar permisos correctos
sudo chmod 600 /swapfile

# 3. Formatear como swap
sudo mkswap /swapfile

# 4. Activarlo
sudo swapon /swapfile

# 5. Verificar
free -h

Para que el swap sobreviva a reinicios, agrégalo a /etc/fstab:

/swapfile none swap sw 0 0

Ajustar el parámetro swappiness

El parámetro vm.swappiness controla qué tan agresivo es el kernel al mover datos de RAM a swap. El valor por defecto es 60; para un servidor web conviene bajarlo a 10–20.

# Cambio temporal
sudo sysctl vm.swappiness=10

# Cambio permanente (agrega en /etc/sysctl.conf)
vm.swappiness=10

Liberar RAM sin reiniciar el servidor

Si el servidor está en crisis ahora mismo, puedes recuperar memoria sin reiniciar:

  • Reiniciar servicios no esenciales: sudo systemctl restart php-fpm.
  • Limpiar el caché de páginas del kernel (con precaución): sudo sync && echo 3 | sudo tee /proc/sys/vm/drop_caches.
  • Identificar y matar procesos que consumen memoria excesiva: sudo kill -9 <PID>.

Soluciones a largo plazo

El swap resuelve la urgencia, pero no el problema. Las acciones permanentes son:

  • Optimizar MySQL/MariaDB: ajusta innodb_buffer_pool_size a máximo el 50–60 % de tu RAM.
  • Limitar workers de PHP-FPM: reduce pm.max_children según la RAM disponible por proceso.
  • Usar un caché de objetos con límite: configura maxmemory en Redis.
  • Ampliar el plan de VPS: si el uso legítimo supera la RAM, es momento de escalar. Conoce las opciones en elenlace.com.

Si necesitas asesoría para dimensionar correctamente tu servidor, el equipo de elenlace.com puede ayudarte a elegir el plan adecuado sin pagar por recursos que no necesitas.

Conclusiones clave

  • Cuando un VPS se queda sin RAM, el OOM Killer mata procesos — el swap lo evita.
  • Usa free -h y ps aux --sort=-%mem para diagnosticar el problema.
  • Crea un archivo de swap de 1–2× la RAM y ajusta vm.swappiness a 10.
  • Optimiza buffers de MySQL, workers de PHP-FPM y limita cachés para resolver la raíz.
  • Si el uso de RAM es sistemáticamente alto, es señal de que necesitas más recursos.

¿Tu VPS sigue agotando la RAM después de estas optimizaciones? Visita elenlace.com y revisa los planes de VPS con mayor memoria, diseñados para sitios y aplicaciones en crecimiento.

Preguntas frecuentes

¿El swap sustituye la RAM en un VPS?

No. El swap es un salvavidas, no un reemplazo. La lectura/escritura en disco es entre 10 y 100 veces más lenta que en RAM, por lo que un servidor que depende constantemente del swap tendrá un rendimiento muy degradado. Úsalo como margen de seguridad mientras optimizas o amplías el plan.

¿Cuánto swap debo configurar?

Para VPS con menos de 4 GB de RAM, configura 1–2 veces la RAM como swap. Para VPS con 4–8 GB, basta con 2–4 GB de swap. Con más de 8 GB de RAM rara vez necesitas swap, pero tener 2 GB sigue siendo recomendable como red de seguridad.

¿El OOM Killer puede matar el proceso de MySQL o Nginx?

Sí, puede matar cualquier proceso. Puedes ajustar el valor oom_score_adj de un proceso para que el kernel lo evite como último recurso, pero la solución correcta es asegurarte de que haya suficiente RAM o swap disponible en todo momento.

¿Cómo sé si el OOM Killer ya actuó en mi servidor?

Ejecuta dmesg | grep -i "oom\|killed" o revisa los logs del sistema en /var/log/messages o /var/log/syslog. Verás líneas con "Out of memory: Kill process" seguidas del nombre y PID del proceso eliminado.

Para saber más

Otros proveedores y guías que vale la pena comparar:

← Todos