Cómo añadir memoria swap en un VPS Linux (planes de 512 MB y 1 GB)
En un servidor cloud de 512 MB o 1 GB, una base de datos, un pool de PHP-FPM y una actualización de paquetes pueden superar fácilmente la RAM disponible al mismo tiempo. Entonces el OOM killer del kernel detiene un proceso, muy a menudo MySQL o MariaDB. Añadir memoria swap en un VPS Linux da al sistema una zona de desbordamiento en disco, de modo que los picos breves de memoria ya no tumban los servicios. Esta guía crea un archivo swap en Debian, Ubuntu, CentOS, Rocky Linux y AlmaLinux, lo hace permanente y ajusta swappiness, con consejos sobre cuándo la swap ayuda de verdad en planes pequeños.
Paso 1: Revisa la memoria y la swap actuales
Empieza comprobando cuánta RAM y swap tiene el servidor, cuánto espacio libre queda en disco y si el kernel ya ha matado procesos por falta de memoria.
free -h
swapon --show # no output = no swap yet
df -h / # make sure there is enough free disk space
# Has the kernel already killed processes for lack of memory?
journalctl -k | grep -i -E 'out of memory|killed process'
Si swapon --show ya muestra un dispositivo o archivo, quizá solo necesites ajustarlo (paso 6) en lugar de añadir otro.
Paso 2: Elige el tamaño de la swap
En un VPS la swap es un margen de seguridad, no un sustituto de la RAM. Estos tamaños funcionan bien en los planes pequeños habituales:
| RAM del plan | Swap recomendada | Notas |
|---|---|---|
| 512 MB | 1 GB | Muy recomendable |
| 1 GB | 1 GB - 2 GB | Recomendada con bases de datos o paneles |
| 2 GB | 1 GB | Margen de seguridad |
| 4 GB o más | 1 GB - 2 GB o ninguna | Solo como reserva de emergencia |
El archivo swap ocupa espacio en el SSD del servidor, así que ten en cuenta el espacio libre del paso 1.
Paso 3: Crea el archivo swap con fallocate o dd
fallocate reserva el espacio al instante. Algunos sistemas de archivos no lo admiten para swap; en ese caso usa dd, que escribe el archivo bloque a bloque: tarda más, pero siempre funciona. Solo root debe poder leer el archivo.
# Fast method (ext4, XFS)
fallocate -l 1G /swapfile
# If fallocate fails, or swapon later reports "file has holes", use dd instead
rm -f /swapfile
dd if=/dev/zero of=/swapfile bs=1M count=1024 status=progress
chmod 600 /swapfile
ls -lh /swapfile
swapon puede fallar con «Operation not permitted».Paso 4: Formatea y activa la swap (mkswap y swapon)
mkswap escribe la firma de swap y swapon la activa al momento, sin reiniciar.
mkswap /swapfile
swapon /swapfile
swapon --show
free -h
Paso 5: Haz la swap permanente en /etc/fstab
Sin una entrada en fstab, la swap desaparece en el siguiente reinicio. Haz una copia del archivo, añade una línea y pruébala desactivando la swap y activándola de nuevo con swapon -a, que lee fstab igual que el arranque.
cp /etc/fstab /etc/fstab.bak
echo '/swapfile none swap sw 0 0' >> /etc/fstab
# Test the fstab entry without rebooting
swapoff /swapfile
swapon -a
swapon --show
Paso 6: Ajusta swappiness para un VPS
vm.swappiness controla con qué facilidad el kernel mueve páginas de memoria a la swap. El valor por defecto, 60, está pensado para escritorios. En un servidor, 10 mantiene los datos activos en RAM y solo usa swap ante una presión real. Bajar vfs_cache_pressure conserva algo más de tiempo los metadatos del sistema de archivos en caché.
cat /proc/sys/vm/swappiness # often 60 by default
# Apply now
sysctl vm.swappiness=10
sysctl vm.vfs_cache_pressure=50
# Keep after reboot
cat > /etc/sysctl.d/99-swap.conf <<'EOF'
vm.swappiness=10
vm.vfs_cache_pressure=50
EOF
sysctl --system
Paso 7: Cuándo ayuda la swap en planes de 512 MB a 1 GB (y cuándo no)
La swap es la herramienta adecuada para picos breves: apt upgrade o dnf update, compilar software, instalaciones con Composer o npm, copias de seguridad nocturnas o una base de datos que necesita más búferes durante un rato. No soluciona una carga que necesita siempre más memoria de la que ofrece el plan. Comprueba si el sistema está usando swap de forma activa:
# Watch the si (swap in) and so (swap out) columns for 10 seconds
vmstat 1 10
Valores distintos de cero ocasionales en si y so son normales. Valores altos constantes indican que el servidor está en «thrashing» y todo se vuelve lento. En ese caso reduce el consumo (menos workers de PHP-FPM, búferes de base de datos más pequeños) o añade RAM al VPS: los servidores cloud de JUSTG admiten RAM adicional desde el área de clientes o mediante un ticket.
Paso 8: Cambia el tamaño o elimina el archivo swap
# Resize to 2 GB or remove swap
swapoff /swapfile
rm -f /swapfile
# To remove completely, also delete the fstab line:
sed -i '\|^/swapfile |d' /etc/fstab
# To resize, repeat Step 3 and Step 4 with the new size (fstab line stays)
Preguntas frecuentes
¿La swap desgasta el SSD?
Con swappiness en 10 y la swap usada solo en picos, el volumen de escritura es pequeño. Un uso intenso y continuo indica que necesitas más RAM, no más swap.
¿Un archivo swap es más lento que una partición swap?
En kernels modernos la diferencia es insignificante. En un VPS un archivo es más fácil de crear, redimensionar y eliminar, por eso esta guía lo utiliza.
MySQL sigue cayéndose tras añadir swap. ¿Qué hago?
Revisa journalctl -k | grep -i oom y free -h. Si la swap también está llena, reduce innodb_buffer_pool_size y el número de workers del servidor web, o amplía la RAM del plan.
Si necesitas ayuda con la swap o la memoria de tu servidor, abre un ticket en https://www.justg.com/submitticket.php y el soporte técnico de JUSTG te ayudará.